6、(接口实现类多重继承及名字冲突)编写一个Java程序,要求定义两个接口Face01 和Face02,在接口Face01中定义一个抽象方法 getName() 和一个默认方法 getNum() ,在接口Face02中定义一个同名的默认方法 getNum();再定义NameConflict 类实现这两个接口,实现抽象方法 getName() 和默认方法getNum(),并在其中委托父接口Face01中的同名默认方法;
时间: 2024-02-09 20:09:30 浏览: 63
代码如下:
```java
interface Face01 {
void getName();
default void getNum() {
System.out.println("Face01.getNum()");
}
}
interface Face02 {
default void getNum() {
System.out.println("Face02.getNum()");
}
}
class NameConflict implements Face01, Face02 {
public void getName() {
System.out.println("NameConflict.getName()");
}
public void getNum() {
Face01.super.getNum();
}
}
public class Main {
public static void main(String[] args) {
NameConflict nc = new NameConflict();
nc.getName(); //输出:NameConflict.getName()
nc.getNum(); //输出:Face01.getNum()
}
}
```
NameConflict 类实现了 Face01 和 Face02 两个接口,并重写了其中的默认方法 getNum() 和抽象方法 getName()。在重写的 getNum() 方法中,通过 Face01.super.getNum() 的方式调用了 Face01 接口中同名的默认方法。在 Main 类的 main 方法中,创建了 NameConflict 类的实例 nc,并分别调用了其 getName() 和 getNum() 方法,输出了预期的结果。
阅读全文