赞
踩
如果抽象类中所有的方法都是抽象方法,就把抽象类变成了接口用interface来表示。类与接口之间通过implements来表示实现,
如果一个普通类实现接口就要把接口中所有的抽象方法进行重写,如果不想都重写就要把普通类编程抽象类。接口与接口之间允许多继承
接口中都是抽象方法?不一定 如果jdk1.8以前接口中只能有抽象方法,从jdk1.8开始就允许接口中可以去定义实体类
接口能定义构造方法?接口中没有构造方法,就无法创建对象
任何类型的对象传值给接口,编译都不检测,运行是检测类与接口之间是否是实现关系
接口与接口之间多继承,类与接口是多实现?可以
接口中允许定义属性和方法?
Illegal modifier for the interface field Shape.i; only public, static & final are permitted//属性
Illegal modifier for the interface method ma; only public, abstract, default, static and strictfp are permitted//抽象方法(默认被static&public共同修饰)
package cn.itcast.day11; /* * 接口---interface---不再是类了 * */ public class InterfaceDemo2 { public static void main(String[] args) { // Lamda表达式:使用前提是接口中有且仅有一个抽象方法 //(参数列表)->{重写的方法体} // Calc c= (x,y)->{return x>y?x:y;}; // Calc c=(int x,int y)->x>y?x:y; // 如果方法体只有一句话就可以省略{}以及return // 由前面抽象方法的参数类型可以推到最后面需要的类型 Calc c=(x,y)->x>y?x:y; System.out.println(c.getMax(6, 8)); } } //计算器 //函数式接口---只有一个抽象方法--函数式编程 @FunctionalInterface interface Calc{ //求和 //实体方法--默认方法 public default int getSum(int m,int n) { return n+m; } //求积 //静态方法---实体方法 public static int getJi(int m,int n) { return n*m; } //抽象方法 int getMax(int m,int n); }
JDK1.8在接口中的新特性
允许定义实体方法–通过static或者default修饰完成的
Lambda表达式—用于重写(接口)抽象方法,规定接口中只能有一个抽象方法,
这个接口就叫做函数表达式接口----函数式编程
import java.util.Arrays; /* * 接口---interface---不再是类了 * */ public class InterfaceDemo3 { public static void main(String[] args) { int [] arr={2,5,416,415,8,2,6,1}; // Array a=(int []arr)->{ Arrays.sort(arr);}; // Array a=(int []arr)-> Arrays.sort(arr); // Array a=(arr)->Arrays.sort(arr); // Array a=arr->Arrays.sort(arr); // 从前到后都只是一个参数的数据参与操作 // ::---的静态方法 Array a=Arrays::sort; a.sort(arr); System.out.println(Arrays.toString(arr)); } } interface Array{ void sort(int [] arr); }
接口–模板、规范
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。