可以使用默认方法实现来在基类中实现抽象方法

时间:2016-12-07 22:54:01

标签: java inheritance default

如果我有一个抽象方法的课程:

abstract class Base {
    abstract void foo();
}

和一个使用默认实现声明相同方法的接口:

interface Inter {
     default void foo() {
         System.out.println("foo!");
     }
}

我是否需要在实现/扩展两者的类中提供实现?

class Derived extends Base implements Inter {

}

看起来这应该可行,但是我得到一个编译错误,Derived不是抽象的,并且不会覆盖抽象方法foo

我猜这个班级的抽象方法是#34;更重要的是"比接口的默认方法。

是否有一种很好的方法可以使这项工作?

我的根本问题是我有一个三级抽象类层次结构(AB扩展CDE扩展{{1 }},FC扩展F),它将具有叶类的多个实现。在每组实现中,有一些常用的方法在基类中定义,所以我希望写

G

1 个答案:

答案 0 :(得分:4)

只需从具体类中调用默认方法:

@Override
public void foo() {
    Inter.super.foo();
}