JDK新特性
接口的默认方法
当多个接口继承同一接口时,若父类接口增加了方法(接口升级),则所有子类接口都需要重写该方法,否则报错,因此JDK提供了解决方法,即:定义默认方法:
public default 返回值类型 方法名(参数列表){}
public可省略,default不可省略
默认方法不是抽象方法,因此不强制被重写,若子类需要重写,则去掉default
若多个接口中有同名的默认方法,此时子类必须对该默认方法重写
接口中的静态方法
允许在接口中定义静态方法,格式:
public static 返回值类型 方法名(参数列表){}
public可省略,static不可省略
静态方法只能通过接口名调用,而不能通过实现类或对象名调用
接口的私有方法
接口中的私有方法,目的是抽取重复代码减少接口的代码冗余,只为接口服务,不需要外类访问,因此用private修饰,私有方法定义格式:
private 返回类型 方法名(参数列表){}
private static 返回类型 方法名(参数列表){}
普通的私有方法,给默认方法提供服务,静态的私有方法,给静态方法提供服务
接口的应用
接口的多态:
当方法的形参是接口时,传递过去的实参可以是接口的所有实现类,即 接口类型 j = new 实现类对象()
总结:
1.接口代表规则,是行为的抽象。想要让哪个类拥有一个行为,就让这个类实现对应的接口就可以了
2.当一个方法的参数是接口时,可以传递接口所有实现类的对象,这种方式称之为接口多态。
适配器
适配器:当接口中的抽象方法过多时,若实现类只需要调用部分方法,那么此时可以创建一个实现类(父类)实现接口,再将需调用接口的类继承该实现类,从而做到子类只需要重写需要的父类中的方法,该实现类被称为适配器