1、接口:代表一组行为标准
2、如何声明接口?
【修饰符】 interface 接口名{
}
【修饰符】 interface 接口名 extends 父接口们{
}
3、接口的成员
JDK1.8之前:
(1)公共的静态的常量:public static final 这三个修饰符可以全部或部分省略
(2)公共的抽象方法:public abstract 这两个修饰符也可以全部或部分省略
JDK1.8之后:
(3)公共的默认方法:public default,其中default是不能省略
(4)共的静态方法:public static,其中static是不能省略
JDK1.9之后:
(5)私有的方法
4、如何实现接口?
【修饰符】 class 实现类 implements 父接口们{
}
【修饰符】 class 类名 extends 父类 implements 父接口们{
}
Java类与类之间只支持单继承,但是类与接口之间支持多实现。
如果继承和实现一起,必须先写继承后写实现
5、接口可以继承接口
【修饰符】 interface 接口名 extends 父接口们{
}
6、接口不能直接实例化,只能实现类的对象
7、默认方法可能会出现冲突?
(1)当一个实现类同时实现多个接口,多个接口中出现了“方法签名”相同的默认方法时,那么需要处理?
A:保留其中一个的实现
接口名.super.方法
B:完全重写
(2)当一个实现类继承父类,又实现接口,父类中的某个方法与接口中的默认方法签名相同,我们可以选择处理?
A:默认编译器保留的是父类的
B:我可以手动选择父接口的
接口名.super.方法
C:选择重写
8、面试题陷阱
(1)当父类与父接口中的成员变量重名时,我们要在子类中访问的话,需要进行区别?
父类的:super.进行访问
接口的:接口名.进行访问
(2)接口中的成员变量一定是常量,值是不能修改的
9、常见的接口
(1)java.lang.Comparable:自然排序接口
抽象方法:public int compareTo(Object obj)
(2)java.util.Comparator:定制排序接口
抽象方法:public int compare(Object o1, Object o2)
(3)java.lang.Cloneable
当你要重写Object类中Object clone()方法时,需要实现这个接口。