2012-07-20 56 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方法,然後坐下來放鬆一下,然後調用它。