サブクラスで変数 i を代入できないのはなぜですか?
class a {
int i;
}
class b extends a {
i=1;
}
サブクラスに変数を割り当てることができます。できないのは、宣言のみが許可されているステートメントを置くことです。(これint i = 10;
は宣言であり、ステートメントではないことに注意してください。)
この場合、コンストラクターは、(サブタイプの) デフォルト値を確立するのに適した場所になる可能性があります。
class b extends a {
public b () {
i = 1;
}
}
ダモが示唆したように、初期化ブロックも機能します。これは、フィールドの初期化チュートリアルで説明されています。
通常、コンストラクターでインスタンス変数を初期化するコードを配置します[しかし] コンストラクターを使用してインスタンス変数を初期化する方法には、初期化ブロックと最終メソッドの 2 つがあります。
すべての答えは正しいですが、これができるとは誰も言いません..
class b extends a {
{
i=1;
}
}
そして、これはコンパイルされa constructor
、前後に実行されますb constructor