変数を持つabstract
スーパークラスがありprotected String
ます。スーパークラスでは初期化されません。
私がやりたいのは、初期化してサブクラスで使用することだけです。だから、私はこのようなものを持っています:
public class MySubclass extends MyAbstractSuperclass {
thing = "i'm a thing";
[...]
}
継承の全体的なポイントは、異なるコンテキストでクラスとそのフィールドを再利用することなので、十分に単純なようです。しかし、それは間違っています:Syntax error on token "thing", VariableDeclaratorId expected after this token
。
サブクラスの初期化を角かっこで囲むことでコンパイルできます。私が知りたいのは、なぜ最初の方法が間違っているのか、そしてなぜブラケットがそれを修正するのかということです。助けてくれてありがとう。
編集:コンストラクターを使用してこれを修正できるというヒントに感謝します。ただし、このようにスーパークラスフィールドを使用することの実際の問題点については、かなり直感的に思えるので、まだ興味があります。また、中かっこで修正するのはなぜですか。たとえば、ループ構造の外側で、ステートメントを中かっこで囲むとはどういう意味ですか。