我是Java编程新手,但有一些基本的理解。这里是我的问题, 我有一个基类,许多类扩展了这个基类。在某些情况下,在基类方法执行的标准 操作之后,我需要为某些子类执行一些操作。 所以我只是按照以下方式完成。只是想检查我是正确的按照OOPSJava基类和子类方法覆盖
class BaseClass {
public void deleteThisRecord() {
// All standard code goes here
doSomethingAfterDelete(); // call clean up method after sucessful delete
}
public void doSomethingAfterDelete() {
// Nothing is here, let the sub class override this if there is need
}
}
class OneClass extends BaseClass {
// other methods
@Override
public void doSomethingAfterDelete() {
// do some action after delete
}
}
这将工作,如果基类有一个默认的实现,并且你想要改变一些子类。如果你想让子类被强制拥有它,你可能需要考虑使用抽象类 – dbarnes
这个问题更多关于http://codereview.stackexchange.com/的主题,但给你我的看法是没有任何违法的关于这样做。我有时候会这样做,因为它比抽象方法稍微灵活一些。有时候我只想要一些子类来做某件事。 – Radiodef
你可能应该做'deleteThisRecord()** ** final **,这样子类在不调用'doSomethingAfterDelete()'的情况下不会再执行它。 – SJuan76