我是Java编程的新手,但有一些基本的了解。这是我的问题, 我有一个基类,许多类扩展了这个基类。在某些情况下,在标准之后 由基类方法执行的操作,我只需要为某些子类做一些操作。 所以我只是按照以下方式完成。只是想根据OOPS检查我是对的
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
}
}
答案 0 :(得分:1)
抽象方法是只能从子类调用的占位符方法。我建议如果doSomethingAfterDelete()是一个打算覆盖的空占位符方法,你应该把它写成:
public abstract void doSomethingAfterDelete();
然后在子类中覆盖它。
答案 1 :(得分:1)
是的,这将按照您描述的方式工作,因为派生类可以选择是否实现doSomethingAfterDelete()
。但是,在Java中,默认情况下,派生类中可以覆盖基类的所有方法,因此您可能希望将final
修饰符添加到方法deleteThisRecord()
以防止它被覆盖:
public final void deleteThisRecord() {
// All standard code goes here
doSomethingAfterDelete(); // call clean up method after successful delete
}