我非常困惑重写构造函数。构造函数不能被覆盖的是结果,当我在谷歌搜索它是什么让我的问题是覆盖构造函数
public class constructorOverridden {
public static void main(String args[]) {
Sub sub = new Sub();
sub.test();
}
}
class Super {
Super() {
System.out.println("In Super constructor");
test();
}
void test() {
System.out.println("In Super.test()");
}
}
class Sub extends Super {
Sub() {
System.out.println("In Sub constructor");
}
void test() { // overrides test() in Super
System.out.println("In Sub.test()");
}
}
当我运行此我得到的结果作为
In Super constructor
In Sub.test()
In Sub constructor
In Sub.test()
请注意在子类中的测试方法被执行。它是否显示超类构造函数被覆盖。它是否正确?
那么,在避免“在构造函数中调用重载方法”时应该使用什么方法?我试图完成的是超类构造函数调用抽象方法init(),build()和fill()的基本流程。所以,所有的子类都必须经历相同的流程! – Akshat
@Akshat:好吧,这听起来像是属于“非常明显的文档”类别。通常有一些*设计的方式,但很难给出一个通用的配方。 –
如果你可以给这些方式链接,那会很棒! – Akshat