问题是这样的,先看一段代码 :
public class A {
public int num = 1 ;
public A() {
fun();
System.out.println("A constuctor.");
}
public void fun() {
System.out.println("A func." + num);
}
}
类 C:
public class C extends A {
public int nu = 100 ;
public static int no = 101 ;
public C() {
System.out.println("C constuctor.");
}
@Override
public void fun() {
System.out.println("C func." + nu + " --- " + no);
}
}
以上代码中,父类 A 在构造方法中调用了一个子类覆写的方法, 经过测试,在实例化 C 类对象时可以正常调用 C 类中 fun 方法 (覆写父类方法),只是 C 类成员属性没有初始化完成。
我想不明白,在 C 类没有构造完成的时候怎么可以调用对象方法呢? 目前我看不懂 JVM 原理,请知道这块的朋友帮我详细解释下,非常感谢!
测试代码就一行:
C c = new C() ;