zoukankan      html  css  js  c++  java
  • 非靜態初始化塊與夠着函數的 執行順序

    題目:

    子類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
  • 相关阅读:
    2. Add Two Numbers
    1. Two Sum
    leetcode 213. 打家劫舍 II JAVA
    leetcode 48. 旋转图像 java
    leetcode 45. 跳跃游戏 II JAVA
    leetcode 42. 接雨水 JAVA
    40. 组合总和 II leetcode JAVA
    24. 两两交换链表中的节点 leetcode
    1002. 查找常用字符 leecode
    leetcode 23. 合并K个排序链表 JAVA
  • 原文地址:https://www.cnblogs.com/lucong-white/p/7609043.html
Copyright © 2011-2022 走看看