Java8-interface-default
说明
- Java8 中 interface 除了定义抽象方法,还可以定义 default 方法,有具体实现
- 类 implements 具有 default 方法的接口后,类具有该方法,类也可以重写该方法
- 类 implements 多个具有相同 default 方法的接口,如果不重写该方法则会报错,重写方法中也可以调用指定接口的 default 方法
示例
1 | interface InterfaceA{ |
注意
如果一个类实现了两个接口,这两个接口又同时都包含了一个名字相同的default方法,在这样的情况下,编译器会报错。因为编译器不知道应该在两个同名的default方法中选择哪一个,因此产生了二义性。我们通过在InterfaceImpl重写doFirstWork方法可以解决编译问题,而且还可以指定调用哪一个接口的方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27interface InterfaceA{
default void doFirstWork(){
System.out.println("InterfaceA doFirstWork");
}
}
interface InterfaceB{
default void doFirstWork(){
System.out.println("InterfaceB doFirstWork");
}
}
class InterfaceImpl implements InterfaceA,InterfaceB{
public void doFirstWork() {
InterfaceB.super.doFirstWork();
}
}
public class Test {
public static void main(String[] args) {
InterfaceImpl obj = new InterfaceImpl();
obj.doFirstWork();
}
}
输出如下:
InterfaceB doFirstWork
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 王文哲的博客!