接口:
一、语法格式:
- 常量:默认使用public static final关键字修饰,这三个关键字也是可以省略不写的
- 抽象方法:使用public abstract关键字修饰,这两个关键字可以省略
- 默认方法:使用public default关键字修饰,public 可以省略,但是default不可以省略
- 静态方法:使用public static关键字修饰,public可以省略,static不可以省略(接口的静态方法不可以被实现类继承)
- 私有方法使用private关键字v修饰,private不可以省略
二、实现接口:
类实现接口后,必须重写接口中所有的抽象方法,否则该类必须是一个“抽象类”
接口中成员的访问特点:
- 常量:主要是供接口直接使用,可以被实现类继承,测试类可用接口名直接调用
- 抽象方法:仅供实现类重写
- 默认方法:供实现类继承,可以在实现类中直接调用(接口名.super.默认方法名),可以在测试类中通过是实现类对象调用
- 静态方法:供接口直接调用,可在实现类和测试类中直接使用接口名调用,实现类继承不了
- 私有方法:只能在接口中直接调用,实现类继承不了
三、接口多继承接口的冲突(接口C extends 接口A,接口B)
- 常量同名:直接编译报错
- 公有抽象方法同名冲突:子类只会重写一次,因为抽象方法没有方法体
- 公有默认方法同名冲突:子类会重写该方法,确认使用哪个接口
四、实现类继承父类又实现接口的冲突
- 父类和接口的公有方法常量同名冲突:直接编译报错
- 父类和接口的抽象方法同名冲突:子类只会重写一次,因为抽象方法没有方法体
- 父类和接口的公有默认方法同名冲突:优先访问父类
- 父类和接口的公有静态方法同名冲突:只会访问父类的静态方法