关于构造代码块 静态构造代码块 构造方法的执行顺序

父类静态代码块

子类静态代码块

父类 构造代码块

父类 构造方法

子类构造代码块

子类构造方法  这个顺序执行


  1. public class TestA {  
  2.     {  
  3.         System.out.println("hello A");  
  4.     }  
  5.     public TestA(){  
  6.         System.out.println("TestA constructor!");  
  7.     }  
  8.     static{  
  9.         System.out.println("TestA static");  
  10.     }  
  11. }  



[java]  view plain  copy
  1. package com.yq;  
  2.   
  3. public class TestB extends TestA{  
  4.     {  
  5.         System.out.println("hello B");  
  6.     }  
  7.     public TestB(){  
  8.         System.out.println("TestB constructor!");  
  9.     }  
  10.     static{  
  11.         System.out.println("TestB static");  
  12.     }  
  13. }  


[java]  view plain  copy
  1. package com.yq;  
  2.   
  3. public class ABtest {  
  4.     public static void main(String[] args) {  
  5.         TestB b=new TestB();  
  6.     }  
  7. }  

执行结果如下:

[java]  view plain  copy
  1. TestA static  
  2. TestB static  
  3. hello A  
  4. TestA constructor!  
  5. hello B  
  6. TestB constructor!  


关于static修饰的方法为什么不能调用非静态变量 :因为方法加载完变量还没加载 这如何调用。这种问题一般都从类加载机制方向去考虑。

你可能感兴趣的:(java)