【发布时间】:2017-09-28 20:35:00
【问题描述】:
考虑以下几点:
//Fooable.java
public interface Fooable {
public default void foo() {
System.out.println("Fooable::foo");
}
//Lots of other non-default methods...
}
//MyFooable.java
public class MyFooable implements Fooable {
@Override
public void foo() {
System.out.println("MyFooable::foo");
}
//implements other methods in Fooable...
}
//MyAdvancedFooable.java
public class MyAdvancedFooable extends MyFooable {
@Override
public void foo() {
Fooable.super.foo();
System.out.println("MyAdvancedFooable::foo");
}
public static void main(String[] args) {
new MyAdvancedFooable().foo();
}
}
如您所见,我想从MyAdvancedFooable(MyFooable 的子类)调用Fooable 中的foo()。但是,当我尝试编译时,出现以下错误:
MyAdvancedFooable.java:4:错误:不是封闭类:Fooable Fooable.super.foo();
如果我尝试MyAdvancedFooable extends MyFooable implements Fooable,我会得到以下信息:
MyAdvancedFooable.java:4: error: bad type qualifier Fooable in default super call Fooable.super.foo(); 方法 foo() 在 MyFooable 中被覆盖
如何在不创建新的 Fooable 匿名实现的情况下解决此问题?
【问题讨论】:
标签: java multiple-inheritance default-method