接口的扩展
1. 接口中新增的方法
JDK7之前接口中只能定义抽象方法。
JDK8的新特性:接口中可以定义有方法体的方法。(默认、静态)
JDK9的新特性:接口中可以定义有私有方法体的方法。
有方法体的方法:接口升级时,为了兼容性而设置的。
JDK8以后:
允许在接口中定义默认方法,需要用关键字default修饰。
作用:解决接口升级的问题
接口中默认方法的定义格式:
格式:public default 返回值类型 方法名(参数列表){}
范例:public default void show(){}
接口中默认方法的注意事项:
默认方法不是抽象方法,所以不强制被重写。但是如果被重写,重写的时候去掉default关键字。
public可以省略,default不能省略。
如果实现了多个接口,多个接口中存在相同名字的默认方法,子类就必须对该方法重写。
1.1 JDK8以后接口中新增的方法
允许在接口中定义静态方法,需要用static修饰
接口中静态方法的定义格式:
格式 :public static 返回值类型 方法名(参数列表){}
范例:public static void show(){}
接口中静态方法的注意事项:
静态方法只能通过接口名调用,不能通过类名或者对象名调用。(因为static方法,不在虚方法表中),所以不需要重写。
public可以省略,static不能省略。
1.2 JDK9以后接口中新增的方法
此方法只为Inter接口提供服务,不需要外类访问。
接口中私有方法的定义格式:
普通的私有方法,给默认方法服务的。
格式:private 返回值类型 方法名(参数列表){}
范例:private void method(){}
静态的私有方法,给静态方法服务。
格式2: private static 返回值类型 方法名(参数列表){}
范例2: private static void method(){}
2. 接口的应用
接口理解成行为的规则,需要哪个规则,就实现对应的接口。
1.接口代表规则,是行为的抽象。想要让哪个类拥有一个行为,就让这个类实现对应的接口就可以了。
2.当一个方法的接口是参数时,可以传递接口所有实现类的对象,这种方式称之为接口多态。
3. 适配器设计模式
设计模式:是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。
使用设计模式是为了可重用代码,让代码更容易被他人理解,保证代码可靠性、程序的重用性。
简单理解:实际模式就是解决各种问题的套路。
适配器设计模式:解决接口与接口实现类之间的矛盾问题。
当一个接口中抽象方法过多,但是我只要使用其中一部分的时候,就可以适配器设计模式。
书写步骤:
编写中间类XXXAdapter,实现对应的接口。
对接口中的抽象方法进行空实现。
让真正的实现类继承中间类,并重写需要写的方法。
为了避免其他类创建适配器类的对象,中间的适配器类用abstract进行修饰。