接口
一.接口以interface关键字声明,且接口中的成员只能是public的
二.接口中只能有:
- 静态常量,static final修饰 >>不写也会默认附上,在定义时必须初始化
- .抽象方法(无方法体),abstract修饰>>不写也会默认附上
- 静态方法,static >>必须显式写出
只供当前接口使用,访问:接口名.静态方法名 - default默认方法,可被子接口或实现类继承,访问:对象名.默认方法名
三、类使用implements关键字来实现接口,该类既是实现类
- 实现类中的成员:该类自己的成员+实现的接口中的抽象方法
- 实现抽象方法时必须使用完全相同的方法头,且访问权限为public( 接口中的成员皆为public),不能为缺省的
- 实现类可以使用接口中的成员
四、父接口指向子类对象时(类似父类指向子类对象),该对象只能使用接口自己有的方法(覆盖的情况)
五、一个接口可以有一个以上的父接口(可实现多继承)
六、子接口可以继承父接口中除了静态方法以外的成员(常量,抽象方法,默认方法),static final 常量可被继承,static方法也不可被实现类所继承。
七、利用接口实现类的多继承有三种方法。
interface A
interface B
interface C extends A,B //C+A+B
class tt
- class cc implements C (cc,A,B,C) cc必须实现A,B,C三个接口中所有的抽象方法
- class cc implements A,B (cc,A,B) cc必须实现A,B 两个接口中所有的抽象方法
- class cc extends tt implements A,B (cc,tt,A,B) cc必须实现A,B两个接口中所有的抽象方法
八、子接口中若定义相同的默认方法,父接口中的将被隐藏。
九、方法名冲突问题——“委托”:在实现时使用父接口名.super.方法名 或 “新实现”:在实现时自己定义(覆盖)。