首页 > 其他 > 详细

非靜態初始化塊與夠着函數的 執行順序

时间:2017-09-29 01:12:52      阅读:267      评论:0      收藏:0      [点我收藏+]

 

題目:

子類A繼承父類B,A a=new A();則父類B夠着函數、父類B靜態代碼塊、父類B非靜態代碼塊執行的先後順序是?

正確的執行順序是:杜磊B靜態代碼塊-》子類A靜態代碼塊-》父類B非靜態代碼塊-》父類B構造函數-》子類A非靜態代碼塊-》子類A構造函數

也就是説非靜態初始化塊的執行順序要在構造函數之前。

 1 class SuperClass{
 2     private static String str="Spuer Class Static Variable";
 3     static{
 4     System.out.println("Spuer Class Static Block:"+str);
 5     }
 6     public SuperClass(){
 7     System.out.println("Spuer class Constructor Menthod");
 8     }
 9     {
10     System.out.println("super class Block");
11     }
12     
13 }
14 
15 public class ObjectInit extends SuperClass{
16     private static String str="Class Static Variable";
17     static{
18     System.out.println{"Class Static Block:"+str};
19     }
20     public ObjectInit(){
21     System.out.println("constructor Menthod");
22     }
23     {
24     System.out.println("Class Block");
25     }
26     public static void main(String[] args){
27         @SuppressWarnings("unused")
28         ObjectInit a = new ObjectInit();
29     }
30 }


執行完之後可以看到順序如下:
Spuer Class Static Block:Spuer Class Static Variable
Class Static Block:Spuer Class Static Variable
Spuer Class Block
Spuer class Constructor Menthod
Class Block
Constructor Menthod

非靜態初始化塊與夠着函數的 執行順序

原文:http://www.cnblogs.com/lucong-white/p/7609043.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!