::: 技术角
普通文章  S3C2410开发套件简介
普通文章  详论JAVA对象的初始化过程
普通文章  Struts 概述
普通文章  JSF 简介
普通文章  Spring 概述
普通文章  Hibernate 概述
普通文章  EJB3.0规范概述
当前位置: 首页 >> 技术角 >> 详论JAVA对象的初始化过程
详论JAVA对象的初始化过程

作者:许松伟     来源:本站原创     发表时间:2006-09-08     浏览次数:    
字号:        打印  推荐  收藏  关闭窗口
内容摘要 学习JAVA这门面向对象的语言,实质就是不断地创建类,并把类实例化为对象并调用方法。对于初学JAVA的人总搞清楚对象是如何实例化的,假如类之间存在继承关系,那就更糊涂了。

    学习JAVA这门面向对象的语言,实质就是不断地创建类,并把类实例化为对象并调用方法。对于初学JAVA的人总搞清楚对象是如何实例化的,假如类之间存在继承关系,那就更糊涂了。下面我们通过两个例题来说明对象的实例化过程。
例1:
  
编译并运行该程序会有以下输出
Static Block
Employee Company:china soft
Non-Static Block
Employee phone:0755-51595599
Employee(String)
Empoloyee()

下面我们来对结果做分析:
1 在代码34行实例化对象时, 先对给静态变量分配内存空间并初始化,然后执行静态块。
因此,在这里会输出:
Static Block
Employee Company:china soft

Employee Company:china soft的输出也说明是先初始化静态变量然后再执行静态块,否则company将为null。
2然后在内存中为Employee分配内存空间,并做默认初始化(即所有变量初始化为默认值,这里都初始化为null)。
3 默认初始化完成后,开始显示初始化。即执行第5行,将phone初始化"0755-51595599",并且执行非静态方法块;因此在这里会有以下输出:
Non-Static Block
Employee phone:0755-51595599

4 最后才调用默认构造函数,在默认构造函数中调用了带参数的构造函数,所以在这里先输出带参数构造函数中的:Employee(String),然后才输出:Empoloyee()。


例2:
 
 上面的代码中Manager继承了前面写的Employee类,当我们编译并运行Manager类,会产生以下的输出:

Static Block
Employee Company:china soft
Sub Static Block
Manager department:sale
Non-Static Block
Employee phone:0755-51595599
Employee(String)
Empoloyee()
Sub Non-Static Block
Manager salary:8000
Manager(String)
Manager()

下面我们对结果做分析:
1 在行34实例化对象时,由于Manager继承了Employee,所以先从父类Employee开始;先给父类静态变量分配内存空间并初始化,然后执行父类静态块。然后再给子类静态变量分配内存空间并初始化,然后执行子类静态块,所以会得到以下输出:
Static Block
Employee Company:china soft
Sub Static Block
Manager department:sale

2然后在内存中为父类Employee分配内存空间,并做默认初始化;再为子类Manager分配内存空间,并做默认初始化。
3默认初始化完成后,从父类开始显示初始化并执行非静态方法块和构造函数,然后再子类开始显示初始化并执行非静态方法块和构造函数。因此会产生以下的输出:
Employee phone:0755-51595599
Employee(String)
Empoloyee()
Sub Non-Static Block
Manager salary:8000
Manager(String)
Manager()

总结以上内容,可以得到对象初始化过程:
1 如果存在继承关系,就先父类后子类;
2 如果在类内有静态变量和静态块,就先静态后非静态,最后才是构造函数;
3 继承关系中,必须要父类初始化完成后,才初始化子类。
4.如需了解更多相关技术,请点击www.5itjob.com

责任编辑:管理员
  打印本文  推荐本文  加入收藏  返回顶部  关闭窗口
上一篇: 嵌入式LINUX就业班10月27日开班下一篇: Java开发者的十大戒律
□ 最新文章
普通文章  S3C2410开发套件简介 09-27
普通文章  详论JAVA对象的初始化过程 09-08
普通文章  Struts 概述 09-04
普通文章  JSF 简介 11-28
普通文章  Spring 概述 08-25
普通文章  Hibernate 概述 08-25
普通文章  EJB3.0规范概述 08-25
普通文章  AJAX简介 08-18
普通文章  WebWork 概述 08-18
普通文章  iBatis 概述 08-18
□ 推荐文章
□ 热点文章
普通文章  Struts 概述 09-04
普通文章  S3C2410开发套件简介 09-27
普通文章  Spring 概述 08-25
普通文章  JSF 简介 11-28
普通文章  Hibernate 概述 08-25
普通文章  详论JAVA对象的初始化过程 09-08
普通文章  AJAX简介 08-18
普通文章  EJB3.0规范概述 08-25
普通文章  WebWork 概述 08-18
普通文章  iBatis 概述 08-18
ITjob就业培训网? ITjob就业培训基地? 深圳培训|IT培训|就业培训|JAVA培训|C/C++培训|嵌入式培训|J2EE培训|.Net培训
JAVA学习|C语言学习|C++学习|嵌入式学习|.Net学习|手机游戏学习|网络游戏学习|J2ME学习|J2EE学习
常用手册:Mysql Ant Struts PHP JDK Hibernate Spring JSF
地址:深圳市福田区上沙创新科技园13栋4-6层 E-Mail: 汇款方式 | 邮箱 | 搜索 | 报名咨询
中国总机:4008100100就业培训
联系电话:0755-25630755 25605455 13534043417
在线咨询QQ:湖北河南365935157 其他地区632747101
粤ICP备05007909号