2016/1/20 总结构建子类对象时的顺序

 1 package Jicheng;
 2 
 3 public class Fulei {
 4     int mm=3;
 5     Fulei(){
 6         //super();
 7         fly();
 8         return;        
 9     }
10     void fly(){
11         System.out.println("父类fly方法"+mm);
12     }
13 }
 1 package Jicheng;
 2 
 3 public class Zilei extends Fulei{
 4     int num=8;
 5     Zilei(){
 6         super();
 7         System.out.println("子类构造方法"+num);
 8         return;    
 9     }
10     
11     void fly(){
12         System.out.println("子类fly方法 "+num);
13     }
14     
15 }
 1 package Jicheng;
 2 
 3 public class TestFZ {
 4 
 5     
 6     public static void main(String[] args) {
 7         Zilei test=new Zilei();
 8         test.fly();
 9         /*
10          *1,JVM会读取制定路径下的Zilei.class文件,并加载进内存。
11               并会先加载Zilei的父类Fulei(有直接父类的情况下,注意Object)
12           2,new 在堆内存中开辟空间,分配地址。
13           3,在对象空间中,对对象中的属性进行默认初始化。数字是0,字符是null
14            4,调用对应的构造函数进行初始化。
15           5,先在子类构造函数中,因第一行隐含的super();会先到父类中调用构造函数进行初始化。
16           6,父类初始化完毕后,再对子类的属性进行显示初始化。此时子类属性如果赋值将会看到
17           7,再进行子类构造函数的特定初始化。
18           8,初始化完毕后,将地址值赋值给引用变量。 */
19     }
20 
21 }

原文地址:https://www.cnblogs.com/haodayikeshu/p/5145030.html