- JDK8以后,接口中新增的默认方法
- 允许在接口中定义默认方法,需要使用关键字default修饰,作用为,解决接口升级时,需要强制修改所有实现类的问题
- 接口中默认方法的定义格式:
a. 格式:
public default 返回值类型 方法名 (参数列表){ }
b. 范例:
public default void show ( ) { } - 接口中默认方法的注意事项:
a. 默认方法不是抽象方法,所以不强制被重写(不重写,也能通过实现类的对象来使用这个默认方法),但是如果被重写,重写的时候需要去掉default关键字
b. public可以省略(虚拟机会自动加上),default不能省略
c. 如果实现了多个接口,多个接口中存在相同名字的默认方法,子类就必须对该方法进行重写
- JDK8以后,接口中新增的静态方法
- 允许在接口中定义静态方法,需要使用static修饰
- 接口中静态方法的定义格式:
a. 格式:
public static 返回值类型 方法名( 参数列表 ) { }
b. 范例:
public static void show () { } - 接口中静态方法的注意事项:
a. 静态方法只能通过接口名调用,不能通过实现类名或者对象名调用
b. public可以省略,static不能省略
c. 静态方法不能被重写
- JDK9以后,接口中新增的私有方法
- 此方法只为接口提供服务,不需要外类访问,所以定义为私有
- 接口中私有方法的定义格式:
a. 给默认方法服务的:
private 返回值类型 方法名 (参数列表) { }
范例:private void show () { }
b. 给static静态方法服务的:
private static 返回值类型 方法名 (参数列表) { }
范例:private static void method () { }
- 接口的应用场景
- 接口作为一种规则,是行为的抽象。想让哪个类拥有某个规则,或某个行为,就让这个类实现对应的接口就可以了
- 当一个方法的参数是接口时,可以传递接口的所有实现类的对象,这种方法称之为接口多态,如图:
a. 遵守编译看左边,运行看右边的原则