允许接口中直接定义带有方法体的方法
第一种:默认方法
- 类似之前写的普通实例方法:必须用default修饰
- 默认会public修饰。需要用接口的实现类的对象来调用
default void run(){
sout("开始跑");
}
第二种:静态方法
- 默认会public修饰,必须static修饰。
- 注意:接口的静态方法必须用户本身的接口名来调用。
static void inAddr(){
sout("...");
}
第三种:私有方法
- 就是私有的实例方法:必须使用private修饰,从JDK1.9才开始有的。
- 只能在本类中被其他的默认方法或者私有方法访问。
private void go(){
sout("准备");
}
新增方法总结
JDK8开始后新增了哪些方法?
- 默认方法:default修饰,实现类对象调用。
- 静态方法:static修饰,必须用当前接口名调用。
- 私有方法:private修饰,jdk9开始才有的,只能在接口内被调用。
- 他们都会默认被public修饰。
JDK8新增的3中方法我们自己在开发中很少使用,通常是Java源码涉及到。现阶段需要理解、识别语法,明白调用关系即可。
接口的注意事项
- 接口不能创建对象。
- 一个类实现多个接口,多个接口中有同样的静态方法不冲突。
- 一个类继承了父类,同时又实现了接口,父类中和接口中有同名方法,默认用父类。
- 一个类实现了多个接口,多个接口中存在同名的默认方法,不冲突,这个了重写该方法即可。
- 一个接口继承多个接口,是没有问题的,如果多个接口中存在规范冲突则不能多继承。