1

別のクラスのサブクラスのオブジェクトを使用して、サブクラス メンバーによって隠されているスーパークラス メンバーにアクセスする方法はありますか。

public class A {
    int i, j;

    A() {
        i = 5;
        j = 5;
    }
}

public class B extends A {
    int i;

    B() {
        super();
        i = 10;
    }
}

class TestEx {
    public static void main(String[] args) {
        B obj = new B();
        // i from B
        System.out.println(obj.i);
    }
}

私はobjを使用してtestExのAからiにアクセスする必要があります..非静的内部クラスの場合にも同じ疑いがあります..とにかく、InnerClassのOuterClassの変数と同じ名前でInnerClassのOuterClassの変数にアクセスします

4

3 に答える 3

5

((A)this).iクラスBのインスタンス メソッド内からと同じくらい簡単、またはさらに簡単に、

A obj = new B(); 
System.out.println(obj.i);

なんで?インスタンス メソッド以外は、動的バインディングとオーバーライドの対象とならないためです。クラスBには、その祖先のすべてのインスタンス変数があります。

于 2012-07-20T09:35:39.237 に答える
2
public static void main(String[] args){
                  B obj=new B();
                //i from B
                 System.out.println(((A)obj).i);
}
于 2012-07-20T09:39:36.730 に答える
0
  1. クラスgetメソッドをポリモーフィズムを介して公開し、Bオブジェクトによって呼び出されたインスタンスからAのiの値を取得します。これは、トピックのタイトルが意味するものです。
  2. 両方のクラスでパブリックget/setメソッドを提供してから、リラックスして呼び出します。
于 2012-07-20T09:46:33.860 に答える