1

サブクラスで変数 i を代入できないのはなぜですか?

class a {
   int i;
}


class b extends a {
   i=1;
}
4

4 に答える 4

9

サブクラスに変数を割り当てることができます。できないのは、宣言のみが許可されているステートメントを置くことです。(これint i = 10;は宣言であり、ステートメントではないことに注意してください。)

この場合、コンストラクターは、(サブタイプの) デフォルト値を確立するのに適した場所になる可能性があります。

class b extends a {
  public b () {
    i = 1;
  }
}

ダモが示唆したように、初期化ブロックも機能します。これは、フィールドの初期化チュートリアルで説明されています。

通常、コンストラクターでインスタンス変数を初期化するコードを配置します[しかし] コンストラクターを使用してインスタンス変数を初期化する方法には、初期化ブロックと最終メソッドの 2 つがあります。

于 2013-06-27T20:56:14.860 に答える
1

すべての答えは正しいですが、これができるとは誰も言いません..

class b extends a {
   {
    i=1;
   }
}

そして、これはコンパイルされa constructor、前後に実行されますb constructor

于 2013-06-27T21:31:00.913 に答える