初期化ブロックの実行順序、静的な初期化ブロックのコンストラクタ

パッケージcom.ocr。

クラスA {
     静的{ 
        するSystem.out.println( "静的INIT A" )。
    } 

    { 
        のSystem.out.println( "インスタンスINIT A" )。
    } 

    A(){ 
        System.out.printlnは( "コンストラクターA." )。
    } 
} 

クラス Bは延びA {
     静的{ 
        するSystem.out.println( "B. INIT静的" )。
    } 

    { 
        のSystem.out.println( "インスタンスINIT B" )。
    }
 
    B(){
        System.out.println(「コンストラクタB」)。
    } 
} 

クラス Cは延びB { 

    静的{ 
        するSystem.out.println( "C. INIT静的" )。
    } 

    { 
        のSystem.out.println( "インスタンスINIT C" )。
    } 

    C(){ 
        System.out.printlnは( "コンストラクタC" )。
    } 
} 

パブリック クラスメイン{ 

    静的{ 
        するSystem.out.println( "静的メインを初期化。" ); 
    } 

    { 
        System.out.printlnは(「インスタンスは、メインを初期化。」); 
    } 

    公共のmain(){ 
        System.out.printlnは( "コンストラクタメイン。" )。
    } 

    パブリック 静的 ボイドメイン(文字列[]引数){ 
        C、C = 新しいC();
        // B B =新しいB(); 
    } 
}

結果

静的には、メインを初期化。
静的初期化A. 
静的B. initの
静的は、C initの
インスタンスA. initの
コンストラクタA. 
インスタンスB. initの
コンストラクタB. 
インスタンスC. initの
コンストラクタをC.

結論:コード実行のブロックがあると言うことに優先してコードの静的ブロック、およびトップ親から実行

シーケンス:>コードのサブクラス静的ブロック - - >親クラスのコンストラクタのコードブロック - - >親クラスのコンストラクタ構成>サブクラスコードブロックコンストラクタ>サブクラス - コードの親クラスの静的ブロック

 

おすすめ

転載: www.cnblogs.com/xyzxy/p/12592250.html