您的位置:首页 > 编程语言 > Java开发

java对象初始化顺序(含测试代码)

2017-10-12 20:19 447 查看
对象初始化顺序:

1. 父类静态成员和静态初始化块 ,按在代码中出现的顺序依次执行
2. 子类静态成员和静态初始化块 ,按在代码中出现的顺序依次执行
3. 父类实例成员和实例初始化块 ,按在代码中出现的顺序依次执行
4. 父类构造方法
5. 子类实例成员和实例初始化块 ,按在代码中出现的顺序依次执行
6. 子类构造方法
以下是测试代码

package test1;

/** 

 * @ClassName: test1 

 * @Description: 测试class对象对向上转型的影响

 * @author: pgj

 * @date: 2017年10月12日 下午4:54:05  

 *  class RTTI说明: http://www.cnblogs.com/vamei/archive/2013/04/14/3013985.html
 * 

 */

public class test1 {

 

 static{
 
System.out.println("test1 static");

 }

public static void main(String[] args) throws ClassNotFoundException {
System.out.println("***1***");
girl girl=new girl();

girl.setId(2);

girl.setName("rose");

girl.setHair("yellow");

girl.setHigh(25);

System.out.println("***2***");

human human=new human();

human.setId(1);

human.setName("tom");

System.out.println("*****");

human human2=(human)girl;///向上转型

System.out.println("----");

Class humangetClass=  human.getClass();

System.out.println("-----");

 Class humforclass=Class.forName("test1.human");

 

 

 String humanZhuanxing=human2.getName();

 System.out.println("humanZhuanxing:"+humanZhuanxing);

System.out.println("humangetClass:"+humangetClass.getName());

System.out.println("humforclass:"+humforclass.getName());



}

class human{
static{

System.out.println("这里是hunman:static");
}
public human() {
// TODO Auto-generated constructor stub
    System.out.println("这里是hunam:constation");
}
private int id;
private String name;
private static test11 test11=new test11();
private test12 test12=new test12();
public void setId(int id) {
this.id = id;
}
public int getId() {
return id;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return id+" : "+name;
}

}

 class  girl extends human{
static{
 
System.out.println("这里是girl:
4000
static");
}
public girl() {
// TODO Auto-generated constructor stub
System.out.println("这里是girl:constation");
}
private Integer high;
private String hair;
private static test11 test11=new test11();
private test12 test12=new test12();
public void setHair(String hair) {
this.hair = hair;
}
public void setHigh(Integer high) {
this.high = high;
}
public String getHair() {
return hair;
}
public Integer getHigh() {
return high;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return high+" : "+hair;
}
 

 }

 class test11{
public test11() {
// TODO Auto-generated constructor stub
System.out.println("这里是静态属性初始化");
}
 

 }

 class test12{
public test12() {
// TODO Auto-generated constructor stub
System.out.println("这里字段属性初始化");
}
 

 }

输出结果:

test1 static

***1***

这里是hunman:static

这里是静态属性初始化

这里是girl:static

这里是静态属性初始化

这里字段属性初始化

这里是hunam:constation

这里字段属性初始化

这里是girl:constation

***2***

这里字段属性初始化

这里是hunam:constation

*****

----

----

-----

humanZhuanxing:rose

humangetClass:test1.human

humforclass:test1.human

结果分析,符合上面结论。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: