Java 父类变量的初始化为啥是调用子类的方法

方法分派(method dispatch)的几个例子其实不太建议这样做的不讲实现的话 你可以这样想:子类的对象方法可能要基于父类的提供的变量环境 所以父类的构造函数要先于子类构造函数执行(如果重写构造函数的话 super()关键字必须出现在子类构造函数的第一行 在你的代码中之所以看不到是因为父类构造函数无参 编译器知道如何将代码植入到子类构造函数中)基于上一条 如果父类调用的函数能够正常运行的前提是环境已经初始化完毕 那就有问题了
■网友
【深入Java虚拟机】之四:类加载机制看初始化这一节
■网友
【Java 父类变量的初始化为啥是调用子类的方法】 “为什么Person、Father中对于j的初始化都调用了Son的fun()方法 ?”
那是因为你把fun()方法写成了public ,你加个private试试。。。

■网友
编译和运行的类型不一样,发生了多态编译的是父类属性,运行的是子类方法


    推荐阅读