如何覆盖父构造函数中使用的方法?

eli*_*ocs 4 java

我遇到了一个设计问题,我不知道如何在java中克服.我想覆盖从父构造函数调用的方法.这是一个非常简单的问题示例:

public class Parent {
    public Parent(){
        a();
    }

    public void a() {
        // CODE
        return;
    }
}

public class Child extends Parent {
    public Child() {
       super();
    }

    public void a() {
       super.a();
       // MORE CODE
       return;
    }
}
Run Code Online (Sandbox Code Playgroud)

我知道子类不会被初始化,直到构造父类,因此不会调用子类a()方法.解决这个问题的正确设计是什么?

Jon*_*eet 7

将调用子覆盖 - 但是子构造函数还没有执行,所以除非它被设计为在部分初始化的对象上调用,否则很容易出现问题.最好的方法是不要在构造函数中调用虚方法.它只是一个问题.你是否掌控了这两门课程?你可以重新设计以避免问题吗?