Cod*_*Now 5 java interface multiple-inheritance
Java解析默认方法冲突:为什么使用super关键字?
我正在阅读"不耐烦的核心Java SE 9"这本书.在"解决默认方法冲突"一节中,我发现在解决默认方法冲突时,会使用super关键字.但我不明白为什么要使用super关键字.
从这个链接:https://docs.oracle.com/javase/tutorial/java/IandI/override.html
我知道super关键字是必需的(否则程序将无法编译).
但这似乎违反直觉.根据我的理解,界面" Identified"没有超级类.为什么不用" return Identified.getId();"?
public interface Person {
default int getId() {
return 0;
}
}
public interface Identified {
default int getId() {
return Math.abs(hashCode());
}
}
public class Employee implements Person, Identified {
public int getId() {
return Identified.super.getId();
}
}
Run Code Online (Sandbox Code Playgroud)
因为Identified.getId()会暗示这getId是一种static方法。在 Java 8 之前,此super关键字仅用于以super.getId().
在您的情况下,Identified.super.getId()并不意味着“已识别的超级的 getId()”,而是“来自已识别的超级的 getId() ”。
| 归档时间: |
|
| 查看次数: |
667 次 |
| 最近记录: |