关于以下代码片段,我有一个非常简单的问题.
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();
}
}
Run Code Online (Sandbox Code Playgroud)
在此示例中,方法中的唯一行main()间接地将调用传递给超类构造函数,在该构造函数中,它尝试将test()方法调用为this.test().
this.test()但是,在超类构造函数中调用的方法是重写的方法SubClass.
为什么this.test()超类构造函数中的方法调用不会在超类本身中调用自己的方法(尽管this指的是调用此方法的当前实例)?