如果我有一个抽象方法的课程:
abstract class Base {
abstract void foo();
}
和一个使用默认实现声明相同方法的接口:
interface Inter {
default void foo() {
System.out.println("foo!");
}
}
我是否需要在实现/扩展两者的类中提供实现?
class Derived extends Base implements Inter {
}
看起来这应该可行,但是我得到一个编译错误,Derived
不是抽象的,并且不会覆盖抽象方法foo
。
我猜这个班级的抽象方法是#34;更重要的是"比接口的默认方法。
是否有一种很好的方法可以使这项工作?
我的根本问题是我有一个三级抽象类层次结构(A
和B
扩展C
,D
和E
扩展{{1 }},F
和C
扩展F
),它将具有叶类的多个实现。在每组实现中,有一些常用的方法在基类中定义,所以我希望写
G
答案 0 :(得分:4)
只需从具体类中调用默认方法:
@Override
public void foo() {
Inter.super.foo();
}