如何使用子类对象访问隐藏的超类成员

时间:2012-07-20 09:31:45

标签: java inheritance

有没有办法在另一个类中使用子类的对象访问由子类成员隐藏的超类成员。

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的acess变量与InnerClass中的一个相同的名称

3 个答案:

答案 0 :(得分:5)

从类((A)this).i的实例方法中简单到B,或者更简单,

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

为什么呢?因为除了实例方法之外的任何内容都不受动态绑定和覆盖的影响。类B具有其祖先的所有实例变量。

答案 1 :(得分:2)

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

答案 2 :(得分:0)

  1. 通过多态公开你的类获取方法,从B对象调用的实例中获取A的i的值。这就是主题标题所暗示的内容。
  2. 在两个班级中提供公共获取/设置方法,然后坐下来放松并调用它。