java子类实例初始化过程

子类的实例化主要分为两个步骤:

<1>.类相关静态内容 初始化;

*先父类再子类:

  1.父类的static属性;

  2.父类的static块;

  3.子类的static属性;

  4.子类的static块;

<2>.类的实例内容 初始化;

*调用构造子:先父类后子类:构造子调用之前先实例化实例字段和块

  5.父类的普通属性;

  6.父类的普通块;

  7.父类的构造子;

  8.子类的普通属性;

  9.子类的普通块;

  10.子类的构造子;

 

举例:

Java代码  收藏代码
  1. package basic;  
  2.   
  3. public class ClzInit {  
  4.     public static void main(String[] args) {  
  5.         new Son();  
  6.     }  
  7. }  
  8. class Parent {  
  9.     protected int n = 5;  
  10.     protected static int m = 5;  
  11.     static {  
  12.         m = m * 2;  
  13.         System.out.println("父类静态块调用;    m="+m);  
  14.     }  
  15.     {  
  16.         n = n * 2;  
  17.         m = m * 2;  
  18.         System.out.print("父类普通块调用;");  
  19.         System.out.print("n="+n);  
  20.         System.out.println("    m="+m);  
  21.     }  
  22.   
  23.     public Parent() {  
  24.         this.n = n * 10;  
  25.         m = m + 10;  
  26.         System.out.print("父类构造子;    n="+n);  
  27.         System.out.println("    m="+m);  
  28.     }  
  29. }  
  30.   
  31. class Son extends Parent {  
  32.     private int sn=3;  
  33.     private static int sm=3;  
  34.     static {  
  35.         m = m + 2;  
  36.         sm=sm+2;  
  37.         System.out.println("子类静态块调用;    m="+m);  
  38.     }  
  39.     {  
  40.         n = n + 2;  
  41.         sn=sn+2;  
  42.         m = m + 2;  
  43.         System.out.println("子类普通块调用;");  
  44.         System.out.print("n="+n);  
  45.         System.out.print("sn="+sn);  
  46.         System.out.println("    m="+m);  
  47.     }  
  48.   
  49.     public Son() {  
  50.         this.n = n + 10;  
  51.         sn=sn+10;  
  52.         m = m + 10;  
  53.         System.out.print("子类构造子;n="+n);  
  54.         System.out.println("    m="+m);  
  55.     }  
  56. }  

 看输出结果,可见端倪:

Output代码  收藏代码
  1. 父类静态块调用;    m=10  
  2. 子类静态块调用;    m=12  
  3. 父类普通块调用;n=10    m=24  
  4. 父类构造子;  n=100   m=34  
  5. 子类普通块调用;  
  6. n=102sn=5   m=36  
  7. 子类构造子;n=112 m=46  

 备忘。欢迎各位指正!

posted @ 2016-12-03 22:33  天涯海角路  阅读(227)  评论(0)    收藏  举报