我有一个关于以下代码片段的非常简单的问题。
public class SuperClass {
public SuperClass() {
this.test(); //Always invokes the overridden method in the sub-class.
}
public void test() {
System.out.println("test() in SuperClass.");
}
}
public final class SubClass extends SuperClass {
public SubClass() {
super();
}
@Override
public void test() {
System.out.println("test() in SubClass.");
}
}
public final class Test {
public static void main(String... args) {
SubClass subClass=new SubClass();
}
}
在此示例中,main()
中的唯一一行方法间接传递对父类(super class)构造函数的调用,并在其中尝试调用 test()
方法为this.test()
.
this.test()
调用的方法然而,在父类(super class)构造函数中, SubClass
中的重写方法.
为什么该方法不调用this.test()
在父类(super class)构造函数中调用父类(super class)本身中的自己的方法(尽管this
指的是要调用this方法的当前实例)?
最佳答案
though[t]
this
refers to the current instance by which this method is to be invoked
确实如此,并且该实例的运行时类型是 SubClass
,因此会调用 SubClass
的方法。
关于java - 从父类(super class)构造函数调用父类(super class)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21837750/