Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2044998
  • 博文数量: 519
  • 博客积分: 10070
  • 博客等级: 上将
  • 技术积分: 3985
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-29 14:05
个人简介

只问耕耘

文章分类

全部博文(519)

文章存档

2016年(1)

2013年(5)

2011年(46)

2010年(220)

2009年(51)

2008年(39)

2007年(141)

2006年(16)

我的朋友

分类: Java

2009-11-30 17:04:58

java构造函数的执行顺序
public class Son extends Father {
    SonProp r 
= new SonProp();
    
public Son() {
        System.out.println(
"Son is construct");
    }

    
public static void main(String[] args) {
        
new Son();
    }

}

class Father {
    FatherProp SonProp 
= new FatherProp();
    
public Father() {
        System.out.println(
"Father is construct");
    }

}

class SonProp {
    
public SonProp() {
        System.out.println(
"SonProp is construct");
    }

}

class FatherProp {
    
public FatherProp() {
        System.out.println(
"FatherProp is construct");
    }

}

执行结果如下:
FatherProp is construct
Father is construct
SonProp is construct
Son is construct

由此不难看出java类初始化时构造函数调用顺序:
  (1)初始化对象的存储空间为零或null值;
  (2)按顺序分别调用父类成员变量和实例成员变量的初始化表达式;
  (3)调用父类构造函数;(如果实用super()方法指定具体的某个父类构造函数则使用指定的那个父类构造函数)
  (4)按顺序分别调用类成员变量和实例成员变量的初始化表达式;
  (5)调用类本身构造函数。

阅读(537) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~