我对Overriding Constructors非常困惑.构造函数不能被覆盖是我在谷歌搜索它时得到的结果我的问题是
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()");
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行这个时,我得到了结果
In Super constructor
In Sub.test()
In Sub constructor
In Sub.test()
Run Code Online (Sandbox Code Playgroud)
请注意,子类中的测试方法已执行.是否显示超级构造函数被覆盖.是否正确?
见下面的例子:
class A {
A() { this(1); }
A(int i) { System.out.println("A" ); }
}
class B extends A {
B() {}
B(int i) { System.out.println("B" ); }
}
public class Test
{
public static void main(String[] args) {
A o = new B();
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
A
Run Code Online (Sandbox Code Playgroud)
Q1:似乎java没有对"this(1)"执行后期绑定.它已在编译时决定.请确认.
Q2:Java不对任何构造函数执行后期绑定.请确认.
问题3:这是否意味着构造函数是隐式最终的?