ホームページ >Java >&#&チュートリアル >Java では静的ブロックとインスタンス初期化ブロックはどのように順序付けされますか?
Java における静的初期化ブロックとインスタンス初期化ブロックの初期化順序
Java は、静的ブロックとインスタンス初期化ブロックを特定の順序で初期化し、正しい読み込みを保証します。そして授業の実行。この順序は、依存関係とリソース割り当てを管理するために重要です。
静的初期化子
Java は、そのクラスまたはそのクラスの静的メンバーが存在する場合にのみ、クラスの静的初期化子ブロックを初期化します。が初めて使われます。以下は静的ブロックの初期化をトリガーします:
インスタンス初期化子
インスタンス初期化子ブロックは、クラスのコンストラクターの直前に実行されます。 。実行順序は、クラス定義内のこれらのブロックの出現によって決まります。
例
次のコード スニペットを考えてみましょう:
class Parent { // Static initializer static { System.out.println("static - parent"); } // Instance initializer { System.out.println("instance - parent"); } // Constructor public Parent() { System.out.println("constructor - parent"); } } class Child extends Parent { // Static initializer static { System.out.println("static - child"); } // Instance initializer { System.out.println("instance - child"); } // Constructor public Child() { System.out.println("constructor - child"); } }
Child クラスがインスタンス化されると、次の出力が生成されます:
static - parent static - child instance - parent constructor - parent instance - child constructor - child
これは、次のことを示しています。親クラス (この場合は Parent) の静的初期化子は、子クラス (Child) の静的初期化子よりも前に実行されます。各クラス内では、インスタンス初期化ブロックがコンストラクターの前に実行されます。
未使用クラスの例外
Java では、使用されないクラスはロードまたは初期化されません。これは、静的初期化ブロックとインスタンス初期化ブロックの両方に適用されます。提供されているコード例では、参照されることのない新しいクラス (IAmAClassThatIsNeverused) を追加しても、他のクラスの初期化順序には影響しません。
以上がJava では静的ブロックとインスタンス初期化ブロックはどのように順序付けされますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。