概念一种引用数据类型,是一种公共的规范标准,符合这个标准的就可以用
格式public interface 接口名 {}
编译生成的字节码文件仍是.java–>.class
接口内容: java9及之后
- 常量
- 抽象方法
- 默认方法(java8)
- 私有方法(java9)
1 定义格式
1.1 抽象方法
接口抽象方法的定义
接口能定义抽象方法
注意:
- 接口中的抽象方法,修饰符固定是
public abstract
不能是其他 - 方法三要素可以随意定义
接口抽象方法的使用
- 接口不能直接使用,必须有一个实现类来实现接口
格式:public class 实现类名称 implement 接口名称 {}
- 接口实现类必须覆盖重写(实现)接口中所有抽象方法
实现:去掉abstract关键字,加上方法体大括号
实现类软规定:接口名Impl
(implement) - 若实现类并未覆盖重写接口所有抽象方法,那么这个实现类自己必须是抽象类
idea快捷键:alt + enter实现类生成接口中的重写方法
1.2 默认方法
默认方法可以解决接口升级的问题
格式:
public interface InterFaceName {
public default void method() {
// 执行语句
}
当接口新增一个抽象方法时,实现类会报错,因为实现类需要覆盖重写接口中所有抽象方法
解决方式就是接口新方法改为默认方法,这样将会被实现类继承
特点:
- 接口默认方法可以通过接口实现类对象直接调用
- 也可以被接口实现类覆盖重写
1.3 静态方法
解决多个静态方法之间代码重复的问题
格式
public static void method2() {
// 执行语句
}
注意:不能通过接口实现类对象来调用接口中的静态方法
通过接口名称直接调用其中的静态方法接口名称.静态方法名
1.4 私有方法
接口中某些方法只被接口本身调用,不该被实现类调用,私有化的
解决接口中多个默认方法之间代码重复的问题
格式:
1.5 接口中常量的定义和使用
接口中的成员变量必须使用public static final
三个关键字修饰,必须复制且赋值后不可修改
常量名命名规则一般使用大写字母加下划线
public interface MyInterfaceConst {
public static final int NUM_OF_MY_CALSS = 10;
}
2 继承父类并实现多个接口
注意:
- 接口没有静态方法块或构造方法
- 一个类可同时实现多个接口
- 如果实现的多个接口中存在重复的抽象方法,只需覆盖重写一次即可
- 如果实现类没有覆盖重写所有接口中的所有接口方法,那么实现类必须是抽象类
- 如果实现类所实现的多个接口中,存在默认重复方法,那么实现类一定要对冲突的默认方法覆盖重写
- 一个类如果直接父类中的方法和接口中的默认方法冲突时,优先用父类方法.
3 接口之间的多继承
- 类与接口之间是多实现的,一个类可实现多个接口
- 接口之间是多继承的
- 多个父接口中的抽象方法可以重复
- 多个父接口的默认方法重复,子接口必须覆盖重写默认方法,而且带着default关键字