Java基类和子类方法重写

时间:2013-10-31 17:03:48

标签: java base-class

我是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
    }
}

2 个答案:

答案 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
}