0

頭の中にJava初期化メカニズムの正しいモデルがあるかどうかわかりません。各クラスは次のとおりです。

  1. スーパークラスが存在する場合は、それを初期化します
  2. 自分を初期化する

初期化は次のとおりです。

  1. 初期化子の外部で値が設定されている静的変数とインスタンス変数を初期化します。
  2. 静的初期化ブロックを実行する
  3. コンストラクターブロックを実行する

それは正確/正しいですか?

4

2 に答える 2

1

Java言語仕様によれば、あなたの仮定は多かれ少なかれ正しいです。例外は次のとおりです。

  1. インスタンス変数は、クラスが初期化された後、クラスが(コンストラクターとともに)構築されるときに実行されます。
  2. コンパイル時定数式を含む最終的な静的変数は、スーパークラスをロードしようとする前にロードされ、
  3. 静的初期化ブロックは、静的変数と一緒に、コードに表示される順序で1つのブロックとして実行されます。
于 2012-04-18T16:14:13.353 に答える
1

コードは以下のように実行されます-

静的初期化ブロックは、クラスが最初にロードされるときに1回実行されます。

静的変数

すべてのスーパーコンストラクター。

インスタンスのinitブロックは、コンストラクターがsuper()を呼び出した後に実行されます。

インスタンス変数。

(初期化ブロックは、表示された順序で実行されます。)

于 2012-04-18T16:39:00.390 に答える