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 访问我。在非静态内部类的情况下存在同样的疑问。无论如何,访问 InnerClass 中的 OuterClass 的变量与 InnerClass 中的变量名称相同

4

3 回答 3

5

就像((A)this).i从 classB的实例方法中一样简单,甚至更简单,

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. 通过多态性公开您的类获取方法,以从 B 对象调用的实例中获取 A 的 i 的值。这就是您的主题标题所暗示的。
  2. 在两个类中提供公共的 get/set 方法,然后静坐放松并调用它。
于 2012-07-20T09:46:33.860 回答