2012-05-05 14 views
2

親クラスでフィールドを定義し、このフィールドに子の値を代入して、Roomタイプでアクセスできるようにする方法はありますか?親で定義されたフィールドを子で初期化できません

public class DarkRoom extends Room { 
    { 
    bound = 3; // error VariableDeclaratorId expected after this token 
     // int bound = 3; // hiding? 
    } 
} 

またはメソッドまたはDarkRoomクラスのコンストラクタで初期化を実行します。私は、あなたが、クラスの初期化ブロックを使用することができます

public abstract class Room {public int bound; } 

public class DarkRoom extends Room { 

    bound = 3; 
} 

答えて

4

は、コンストラクタではなく、クラス宣言でフィールドを割り当てます。

public class DarkRoom extends Room { 
    public DarkRoom() { 
     bound = 3; 
    } 
} 
1

...このint bound = 3;が親の変数を非表示になると思います。

+1

なぜ*匿名*コンストラクタを使うのか?これは匿名のクラスではないので、必要はありません。なぜコンストラクタを使用しないのですか? –

+0

複数のコンストラクタが存在する可能性があります。これは単なる例です。それを行うには多くの方法があります。 –

関連する問題