对象初始化顺序:
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: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
结果分析,符合上面结论。