(额外注:(与下面的历程“无关”):
(1)当在子类中使用super关键字后,会在堆中新建一个父类对象;
(2)假若父类A中有public void m(){}这个方法,B类继承A类。
实例化A类对象a,那么在堆中会开辟一个空间存储a对象,m这个方法也会在a对象的空间中;
实例化B类对象b,那么在堆中会开辟一个空间存储b对象,那么m这个方法会复制一份到b对象所在的空间中吗?
PS:2020、8、8回答,上面的解答可能不太准确,目前没必要深究,只需知道:
方法是放在方法区中的,只有new出来的东西是放在堆内存中的,主要是方法区,堆、栈的关系,以后有机会应该可以通过了解Java虚拟机深入理解这儿的知识,这儿如果对开发造不成太大障碍的话,可以先过掉
)
子类对象加载的执行过程,下面的主要看流程:
第三步:因为静态成员是隶属于类的,所以为了加载类,需要把static成员加载进来。
下图中第九步说对象已经得到了,似乎不妥,目前理解是,对象的Object式的基本模型已经得到,接下来是要着手得到具体的父类对象了
关乎父类对象的东西都准备完毕。
基本过程是,先加载类,再加载成员属性以得到对象。
要想产生子类的实例对象,会先去调用父类的构造流程,完成父类的构造。