编写一个Java程序,在程序中定义NameConflict类的同时实现接 Face1,Face2 在接口Face1中定义一个抽象方法GetName()和一个默认方法getNum()在接口Face2中定义一个同名的默认方法getNum()。在NameConflict中实现抽象方法getName ()和默认方法getNum(), 并在其中委托父接口 Face1中的同名默认方法
时间: 2024-03-19 11:43:27 浏览: 93
好的,我理解了你的问题。以下是实现代码:
```
interface Face1 {
String getName();
default int getNum() {
return 1;
}
}
interface Face2 {
default int getNum() {
return 2;
}
}
class NameConflict implements Face1, Face2 {
// 实现 Face1 接口的抽象方法
public String getName() {
return "NameConflict";
}
// 实现 Face1 接口的默认方法
public int getNum() {
// 委托父接口 Face1 中的同名默认方法
return Face1.super.getNum();
}
public static void main(String[] args) {
NameConflict nc = new NameConflict();
System.out.println(nc.getName()); // 输出:NameConflict
System.out.println(nc.getNum()); // 输出:1
}
}
```
在这个程序中,我们定义了两个接口 Face1 和 Face2,以及一个实现了这两个接口的类 NameConflict。在 Face1 中定义了一个抽象方法 getName() 和一个默认方法 getNum(),在 Face2 中也定义了一个同名的默认方法 getNum()。在 NameConflict 类中实现了抽象方法 getName() 和默认方法 getNum(),并且在 getNum() 方法中委托了父接口 Face1 中的同名默认方法。最后在 main 方法中测试了一下。
阅读全文