2012-07-20 58 views
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); 
    } 
} 

我需要使用来自接取i的TESTEX OBJ .. 相同怀疑存在于非静态内部类的情况下,无论如何..接取的在OuterClass变量与将InnerClass相同名称的那一个在将InnerClass

回答

5

由于作为((A)this).i从类B的实例方法,或者更简单的内简单,

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

为什么?因为除了实例方法以外,没有任何东西可以动态绑定和覆盖。类B具有其祖先的所有实例变量。

+0

那么我可以使用超级从内B类权利..?我需要在TextEx中做到这一点。我知道将子类引用分配给超类变量。我相信来自超类的我将会出现在obj中。我需要明白这一点 – flyinrhyno 2012-07-20 09:40:11

2
public static void main(String[] args){ 
        B obj=new B(); 
       //i from B 
       System.out.println(((A)obj).i); 
} 
0
  1. 暴露你的班级获得通过多态性的方法来从B对象调用的情况下获得的A的i的值。这是你题目暗示的主题。
  2. 在这两个课程中都提供公开的get/set方法,然后坐下来放松一下,然后调用它。