我在阅读有关 java 8 默认方法的文章时遇到了以下段落here:
如果层次结构中的任何类具有具有相同签名的方法,则默认方法将变得无关紧要。默认方法不能覆盖 java.lang.Object 中的方法。道理很简单,因为Object是所有java类的基类。因此,即使我们将 Object 类方法定义为接口中的默认方法,它也是无用的,因为 Object 类方法将始终被使用。这就是为什么为了避免混淆,我们不能使用默认方法来重写 Object 类方法。
我很快尝试了以下代码来确认该行为
public class DefaultMethodClass {
public void defaultMethod()
{
System.out.println("DefaultMethodClass.defaultMethod()");
}
}
public interface DefaultMethodInterface {
public default void defaultMethod()
{
System.out.println("DefaultMethodInterface.defaultMethod()");
}
}
public class DefaultMethodClassInterfaceChild extends DefaultMethodClass implements DefaultMethodInterface
{
public static void main(String[] args) {
(new DefaultMethodClassInterfaceChild()).defaultMethod();
}
}
这打印
DefaultMethodClass.defaultMethod()
我看不出语言设计者选择这种特定行为背后的任何具体原因。他们有什么重要的原因让我失踪吗?或者只是接口默认方法在逻辑上比超类提供的具体实现更不重要?
我看不出语言设计者选择这种特定行为背后的任何具体原因。
方法定义在 Java 1.0 中,接口默认方法是在 Java 8 中添加的。为 Java 1.0 编写的代码仍然需要工作。
或者只是接口默认方法在逻辑上比超类提供的具体实现更不重要?
实际上,在现有代码编写了 20 多年之后,添加它们的重要性已降低。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)