【发布时间】:2021-10-07 01:37:04
【问题描述】:
Java 8 引入了default methods 以提供扩展接口的能力,而无需修改现有实现。
我想知道当某个方法已被覆盖或由于不同接口中的默认实现冲突而无法使用时,是否可以显式调用该方法的默认实现。
interface A {
default void foo() {
System.out.println("A.foo");
}
}
class B implements A {
@Override
public void foo() {
System.out.println("B.foo");
}
public void afoo() {
// how to invoke A.foo() here?
}
}
考虑到上面的代码,你会如何从 B 类的方法中调用 A.foo()?
【问题讨论】:
-
你能告诉我为什么你的 foo() 方法在你的接口 A 中有实现吗??。
-
@MaciejCygan 在 Java 8 中是允许的
标签: java inheritance interface java-8 default-method