观察以下代码,当我们运行Son son=new Son();内存中发生了什么
public class Test {
public static void main(String[] args) {
Son son=new Son();
}
}
class GrandFa{
String name="老头爷爷";
}
class Father extends GrandFa{
String name="小头爸爸";
}
class Son extends Father{
String name="大头儿子";
}
- 首先在方法区建立依次object,grandfa,father,son类
- 其次在堆中建立grandfa的地址空间,并且为其相关属性指定地址,属性的值存储在方法区的常量池中。
- 再次在堆中分别建立father与son类,并分配响应的空间
-
Son son=new Son();建立之后指向堆中的对象
- 访问son.name的时候,先查找本类中,没有则区父类,然后时爷爷类,最终时object类。