从基类重写已实现的方法



重写已经在基类中实现的基类方法是一个好做法吗?

如果没有,是否可以在派生类中添加一个新方法?

是。如果你创建子类是为了创建一个对调用者透明地实现超类型方法的新类型,那么你可以而且应该重写基类中的方法,以便在子类的上下文中正确地实现它们。

只要确保使用基类实例的调用者可以用同样的方式对待子类实例——你的子类实现与超类中方法的含义一致。

在不知道更多的情况下,我不清楚这是否得到了你问的问题,但我想我应该尝试一下你问的问题。因此,我将忽略第二个有待澄清的问题,因为第一个问题的答案是"是"。"

是的,这绝对是一个很好的实践,而且经常是必要的。例如,您经常希望扩展基类方法的行为,如:

// overriding method foo()
void foo() {
    // do something unique to the base class:
    println("called from child class!");
    // call parent class's implementation:
    super.foo();
}

最新更新