日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

JAVA類的各種成員初始化順序如:父子類繼承時的靜態代碼塊,普通代碼塊,靜態方法,構造方法,等先后順序

class B extends A , 然后 A 類也就是父類里面有靜態代碼塊,普通代碼塊,靜態方法,靜態成員變量,普通成員變量,普通方法。 子類也是這樣,然后繼承之后,關于程序打印輸出的結果。 涉及到 Java 類的各種成員的初始化順序。 經測試,得到如下結論:

  • 1、父類【靜態代碼塊】和【靜態成員】,按在代碼中出現的順序依次執行。
  • 2、子類【靜態代碼塊】和【靜態成員】,按在代碼中出現的順序依次執行。
  • 3、父類的【普通代碼塊】和【普通成員變量被普通成員方法賦值】,按在代碼中出現的順序依次執行。
  • 4、執行父類的構造方法。
  • 5、子類的【普通代碼塊】和【普通成員變量被普通成員方法賦值】,按在代碼中出現的順序依次執行。
  • 6、執行子類的構造方法。

下面看測試代碼以及測試結果的圖:

父類:

package com.test.ClassInitTest;

public class Parent {
    static {
        System.out.println("父類: 靜態代碼塊");
    }

    {
        System.out.println("父類: 普通代碼塊");
    }

    private static String staticStringInParent = initStaticStringInParent();

    private String stringInParent = initStringInParent();

    public Parent() {
        System.out.println("父類: 構造方法");
    }

    private static String initStaticStringInParent() {
        System.out.println("父類:靜態方法,被靜態成員變量賦值調用。");
        return "initStaticStringInParent";
    }

    private String initStringInParent() {
        System.out.println("父類:普通成員方法,被普通成員變量賦值調用。");
        return "initStringInParent";
    }
}

子類:

package com.test.ClassInitTest;

public class Child extends Parent {

    private static String staticStringInChild = initStaticStringInChild();
    private String stringInChild = initStringInChild();

    static {
        System.out.println("子類:靜態代碼塊");
    }

    {
        System.out.println("子類:普通代碼塊");
    }

    public Child() {
        System.out.println("子類:構造方法");
    }

    private static String initStaticStringInChild() {
        System.out.println("子類:靜態方法,被靜態成員變量賦值調用。");
        return "initStaticStringInChild";
    }

    private String initStringInChild() {
        System.out.println("子類:普通成員方法,被普通成員變量賦值調用。");
        return "initStringInChild";
    }
}

測試 main 方法

package com.test.ClassInitTest;

public class ClassInitTest {
    public static void main(String[] args) {
        System.out.println("測試代碼開始");
        new Child();
        System.out.println("測試代碼結束");
    }
}

結果輸出:

測試代碼開始
父類: 靜態代碼塊
父類:靜態方法,被靜態成員變量賦值調用。
子類:靜態方法,被靜態成員變量賦值調用。
子類:靜態代碼塊
父類: 普通代碼塊
父類:普通成員方法,被普通成員變量賦值調用。
父類: 構造方法
子類:普通成員方法,被普通成員變量賦值調用。
子類:普通代碼塊
子類:構造方法
測試代碼結束

作者:老周聊架構

來源:稀土掘金

鏈接:
https://juejin.cn/post/6952750370598682660

版權聲明: 內容來源網絡,僅供分享學習,版權歸原創作者所有,除非無法確認,我們都會標明作者及出處,如有侵權煩請告知,我們會立即刪除表示歉意。謝謝!

分享到:
標簽:Java
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定