当用new创建对象时(无继承和有继承两种情况下)虚拟机的执行过程
来源:互联网 发布:chocobank网络剧 编辑:程序博客网 时间:2024/05/17 09:04
一,当不存在继承时,创建对象如Animal a=new Animal( );
虚拟机要做的三件事依次是:
1.申请空间(将值放到该空间中,然后将该空间的首地址值赋给引用变量);
2.初始化实例变量;
3.执行构造方法;
二,当存在继承时创建对象,如Animal a=new Dog( );
此时虚拟机要做的依次是:
1.申请空间(将值放到该空间中,然后将该空间的首地址值赋给引用变量);
2.看构造函数的第一句;
3.默认的创建父类对象(子类实例变量默认初始化-->父类初始化-->子类实例变量显式初始化-->执行子类构造函数对子类进行初始化);
4.初始化该类的实例变量(初始化所有属性);
5.执行该类的构造函数;
当构造函数第一句是super( )表示调用父类构造函数,this( )表示调用本类的构造函数。
同时在创建和访问时对属性和方法的访问顺序是不同的,在创建时会先对执行父类的构造函数对父类进行初始化,
然后再执行子类的构造函数对子类进行初始化;在访问时却相反,访问时会先访问子类的属性和方法再访问父类的属性和方法。
- 当用new创建对象时(无继承和有继承两种情况下)虚拟机的执行过程
- 5.1 无继承情况下的对象构造
- new和delete 基类指针指向继承类的对象时,delete的过程
- C++对象模型——"无继承"情况下的对象构造(第五章)
- C++创建对象的两种方法(C++用new和不用new创建类对象)
- 对象创建的详细过程,继承和多态
- 继承父类的两种情况
- JAVA中创建线程对象的两种方法:继承Thread和实现Runable
- 继承关系的对象创建过程
- java继承中new子类对象的执行顺序
- 创建对象和继承
- 在没有类的情况下,JavaScript如何创建对象、实现继承?
- Java在有继承情况下初始化函数的调用
- JavaScript的两种面向对象方法--原型继承(prototype)和函数继承(闭包)
- C++程序运行时内存布局之----------无继承情况下的虚函数
- C++程序运行时内存布局之----------无继承情况下的虚函数
- C++程序运行时内存布局之----------无继承情况下的虚函数
- JS对象的创建和继承
- 10月12---10月26号第二周总结
- Python初学感悟
- C语言strlen函数的注意
- 一个游戏程序员的学习资料
- 孙鑫老师VC视频教程笔记1-10课
- 当用new创建对象时(无继承和有继承两种情况下)虚拟机的执行过程
- c#获取当前日期时间
- linux tr命令详解
- 10月29号---11月2号第三周总结
- IplImage和char*相互转换
- jqgrid学习网博客
- javascript 学习笔记 javascript对象篇
- 解决:provider:Named Pipes Provider error:40无法打开SQL Server的连接
- Hibernate_005_ID生成策略_XML_Annotation