5

次に例を示します。

class Parent {
    protected int A;

    public void displayA() {
        System.out.println(A);
    }
}

class Child extends Parent {
    protected static int A=2;
}

Child intance = new Child();
intance.displayA();

=> return null !!!

親メソッドから子属性を取得する方法は何ですか?

ありがとうございました :)

4

2 に答える 2

3

子のコンストラクターでA変数を設定できます。

class Child extends Parent {
   // protected static int A=2; // this redeclares the variable -- it's a different variable

   public Child() {
      A = 2;
   }
}

ただし、親の変数にゲッターとセッターを指定し、必要に応じて子または親から設定または取得する方がよいと思います。私の考えでは、フィールドを直接操作するよりも、フィールドの変更を監視し、変更されるデータが不適切な場合にアクションを実行できるため、これは優れています。

その他の提案:Javaの命名規則を学び、それを守りましょう。また、投稿されたコードには、タイプミスを含む多くの不注意なエラーが含まれています。あなたが他の人に無料であなたを助けようとする努力をするように頼んでいるなら、あなたに同じことをするように頼むことはあまり多くはありません-助けにならないように実際のコードでまともな質問をする努力をしてください必要以上に難しいです。

于 2012-08-19T15:25:56.240 に答える
2

あなたのインスタンスでは、変数を再宣言するのではなく、Childクラスコンストラクターを使用してAの値を設定する場合、親クラスは値を取得できるはずです。

上記のインスタンスの問題は、スーパークラスの変数の値を変更するだけでなく、サブクラスの変数を再宣言していることです。

子変数が静的として宣言されている理由はありますか?そのクラス変数の値のみが必要な場合は、それを直接参照できます。ただし、複数のサブクラスが変数値を設定し、それをスーパークラスで使用できるようにするためのより適切な方法は、子クラスに必要な値を設定させてから、スーパークラスにその変数を参照させることです(おそらくゲッターを使用)サブクラスがの値を設定したこと。

于 2012-08-19T15:28:28.037 に答える