Java语言基础:对象的初始化
来源:互联网 发布:如何打开淘宝卖家 编辑:程序博客网 时间:2024/06/04 17:40
1. 如果基类存在默认构造函数,则在子类构造之前,会先调用基类的默认构造函数:
2. 如果基类只有带参数的构造函数,子类必须在自己的构造函数中通过super(...)显式调用该基类构造函数:
3. 以上只讲了最简单的构造函数调用顺序,其实一个对象的真正的初始化过程应该是:
- 将对象的存储空间初始化为二进制的0.
- 先递归到最上层的基类去,将最上层的基类作为当前类。
- 对于当前类:
- 按声明顺序调用成员变量的初始设置代码。
- 调用构造函数。
- 接着将下一层继承类作为当前类,继续步骤3
先看下面的代码:
初始化过程大概是这样的:
- 先从C递归到B,再从B递归到A。
- A没有成员变量,所以A的构造函数被调用。
- 接到回到B,B有一个D类的成员有初始化,因此D的构造函数被调用。
- 接着B的构造函数被调用。
- 最后回到C,C的构造函数被调用。
所以输出应该是:
A create
D create
B create
C create
4. 必须小心在构造函数中调用虚函数(在JAVA里普通函数都是虚的)的隐患,特别是在基类的构造函数,因为此时继承类的成员可能还没有初始完毕:
A的构造函数调用了proc,此时B的构造函数还没有被调用,因此i还没有被赋为10,最终输出结果是0。
5. 由于Java对象都是通过垃圾回收机制清理对象,因此Java的类没有析构函数,遇到需要清理类中资源的问题时,可以自己声明一个函数,如Dispose,在适当的时候调用之。
- Java语言基础:对象的初始化
- java语言基础-数组的静态初始化
- Java基础2面向对象:透析类的加载与初始化 对象的初始化 zongjihengfei
- java基础---->对象的创建过程(初始化、析构、清理)
- Java基础巩固:类和对象的初始化顺序
- Java基础总结之类与对象的初始化顺序
- Java基础-对象的内存分配与初始化
- Java基础-对象的内存分配与初始化
- Java对象的初始化
- JAVA 对象的初始化
- java对象的初始化
- Java语言基础-数组的静态初始化和内存分析
- Java语言基础-数组的动态初始化和内存分析
- Java语言基础之对象与对象间的关系
- Java基础重温(四)对象初始化加载
- Java基础笔记——对象初始化
- java基础之 ----对象初始化过程
- 黑马程序员****OC语言基础****对象的初始化和自定义构造法
- [转]给想当程序员的大二学生的建议
- helloGtk
- 帐号和密码输入框的大小一样
- 我想做的
- 把控制台窗口的系统关闭按钮变灰
- Java语言基础:对象的初始化
- asp数字验证码源代码
- poj3750
- C/C++ 编译器(CL.EXE)选项
- Facade模式——结构型模式
- python文件处理
- mysql 安装过程中的失败问题
- sizeof使用
- 驱动程序