【发布时间】:2011-11-20 11:57:08
【问题描述】:
如果你有一个带有 3 个方法(x()、y() 和 z())的接口(Position),并且还有一个抽象类,我们可以将其命名为 Shape。
Shape 实现了 Position 并且只给 x() 和 y() 提供代码。编译器是否隐含猜测 z() 是一个抽象方法?
【问题讨论】:
标签: java class interface implementation abstract
如果你有一个带有 3 个方法(x()、y() 和 z())的接口(Position),并且还有一个抽象类,我们可以将其命名为 Shape。
Shape 实现了 Position 并且只给 x() 和 y() 提供代码。编译器是否隐含猜测 z() 是一个抽象方法?
【问题讨论】:
标签: java class interface implementation abstract
是的。只要 Shape 是抽象的,就不需要实现 Position 的所有方法。这是任何具体类所必需的。
【讨论】:
是的,因为你不能实例化抽象类(Shape),编译器知道 z() 将由其他一些子类(Shape)实现。
【讨论】:
抽象类不需要实现所有方法。这是他们具体类/实现的责任。在这种情况下,是的z() 将被视为Shape 的抽象方法。
【讨论】:
每个非抽象类都必须为其任何抽象超类或接口中定义的所有方法提供实现。编译器足够聪明,可以检查整个类的层次结构,以确定您忘记实现您的类声称为其提供实现的东西。
【讨论】: