(接口实现类多重继承及名字冲突)编写一个Java程序,要求定义两个接口Face01 和Face02,在接口Face01中定义一个抽象方法 getName() 和一个默认方法 getNum() ,在接口Face02中定义一个同名的默认方法 getNum();再定义NameConflict 类实现这两个接口,实现抽象方法 getName() 和默认方法getNum(),并在其中委托父接口Face01中的同名默认方法;
时间: 2024-02-09 10:08:41 浏览: 65
实现如下:
```java
interface Face01 {
String getName(); // 抽象方法
default int getNum() { // 默认方法
return 1;
}
}
interface Face02 {
default int getNum() { // 同名默认方法
return 2;
}
}
class NameConflict implements Face01, Face02 {
@Override
public String getName() {
return "NameConflict";
}
@Override
public int getNum() { // 委托Face01中的同名默认方法
return Face01.super.getNum();
}
}
```
我们定义了两个接口 `Face01` 和 `Face02`,其中 `Face01` 定义了一个抽象方法 `getName()` 和一个默认方法 `getNum()`,`Face02` 定义了一个同名的默认方法 `getNum()`。然后我们定义了一个类 `NameConflict`,它实现了这两个接口,并且实现了 `getName()` 和 `getNum()` 方法。
在 `NameConflict` 类中,我们必须实现 `getName()` 方法,因为它是一个抽象方法。我们同时也实现了 `getNum()` 方法,但是在这里我们不能直接使用 `getNum()` 方法,因为它存在于两个不同的接口中,我们需要指定调用哪个接口中的方法。在这里,我们委托了 `Face01` 中的同名默认方法,通过 `Face01.super.getNum()` 进行调用。
这样,我们就成功地解决了接口实现类多重继承及名字冲突的问题。
阅读全文