一个对象实例化的过程
2015-10-30 21:35
253 查看
一个对象实例化的过程:
1、JVM会读取指定的路径下的Person.class文件,并加载到内存,
并会先加载Person的父类(如果有直接父类的情况下)
2、在堆内存中的开辟空间,分配地址
3、并在对象空间中,对对象的属性进行默认初始化。
4、调用对象的构造函数进行初始化
5、在构造函数中,第一行会县调用父类中的构造函数进行初始化
6、父类初始化完毕后,再对子类的属性进行显示初始化
7、再进行子类构造函数的特定初始化
8、初始化完毕,将地址值赋值给引用变量
1、JVM会读取指定的路径下的Person.class文件,并加载到内存,
并会先加载Person的父类(如果有直接父类的情况下)
2、在堆内存中的开辟空间,分配地址
3、并在对象空间中,对对象的属性进行默认初始化。
4、调用对象的构造函数进行初始化
5、在构造函数中,第一行会县调用父类中的构造函数进行初始化
6、父类初始化完毕后,再对子类的属性进行显示初始化
7、再进行子类构造函数的特定初始化
8、初始化完毕,将地址值赋值给引用变量
class Fu { Fu() { show(); } void show() { System.out.println("Fu show"); } } class Zi extends Fu { int num = 8; Zi() { super(); <span style="color:#ff0000;">//————>>通过super初始化父类的内容时,子类的成员变量并未显示初始化。 //等super()父类初始化完毕后,才进行子类的成员变量显示初始化</span> System.out.println("zi run ……" + num); return ; //return 可以省略 } void show() { System.out.println("Zi show……" + num); } } class ExtendsDemo { public static void main(String args []) { Zi z = new Zi(); z.show(); <span style="color:#ff0000;">//打印出的结果是 /* Zi show……0 zi run ……8 Zi show……8 */</span> } }
相关文章推荐
- [蓝桥杯]常用算法-穷举法
- LeetCode OJ:Jump Game(跳跃游戏)
- 关于多线程
- 序列化的简单实现
- Codevs P1288 埃及分数
- 零用钱
- centos7利用packstack单点安装openstack
- 大数据挖掘技术之DM经典模型
- Java基础巩固
- JAVA程序题
- [Django后台管理系统]Django的标准库django.contrib包介绍
- js 传参数
- HTML标签之<q> <blockquote>
- 关于在 UITableView FooterView 中控件宽度设置问题
- static修饰函数
- 利用Apache的commons-beanutils和commons-collections包实现Java对象的按属性排序
- Codeforces Round #262
- Java基础学习14(面向对象特征二:继承性)
- poj 1651
- 维护被攻击后的服务器的方法