Java の初期化とインスタンス化の順序
Java のクラスとオブジェクトは、言語の実行において重要な役割を果たす個別の初期化プロセスを経ます。この記事は、初期化とインスタンス化の概念を明確にして詳しく説明し、特定の質問に対処し、Java 言語仕様 (JLS) でよく遭遇する複雑さを解決することを目的としています。
クラスの初期化
クラスの初期化は、クラスまたはインターフェイスへの最初のアクセス中に発生し、いくつかの要素が関与します。手順:
- 定数静的フィールドの割り当て。
- スーパークラスの再帰的初期化 (必要な場合)。
- 静的初期化子の処理と非定数静的フィールド値の設定。
インターフェースは通常、次の場合に個別に初期化されます。非定数インターフェイスフィールドがアクセスされます。この初期化により、再帰的な動作がトリガーされる可能性があります。
オブジェクトの初期化
オブジェクトが作成されると、次のアクションで構成されるオブジェクトの初期化が行われます:
- コンストラクター呼び出しのパラメーターの割り当て。
- 同じクラスのコンストラクターの呼び出し(存在する場合)。
- スーパークラス コンストラクター (存在する場合) を呼び出します。
- インスタンス初期化子と変数代入を順番に実行します。
- 残りのコンストラクター本体を実行します。
への答え質問
- インターフェイスはクラス内の宣言の順序で処理されます。
- いいえ、インターフェイスは別の再帰スタックでは処理されません。
- a) インターフェースが最初に処理され、続いてスーパークラスが処理されます。
b) インターフェースの静的非コンパイル時定数フィールドは、前に初期化されます。スーパークラスのコンパイル時の定数フィールド。
- デフォルト以外の super() コンストラクターの呼び出しにより、スーパークラス コンストラクターの初期化とその後のステップがトリガーされます。
- 結論に大きな間違いはありませんでした。
- 重要な詳細を効果的に強調しました。
以上がJava はクラスとオブジェクトをどのように初期化しますか?また、初期化の順序は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。