2016-07-09 55 views
2

我有三個類ABC類B擴展A和C類擴展B.如何通過超級關鍵字獲取變量的值?

我想目前在class A整數a的價值和class C打印值。我的第一選擇是通過super關鍵字進行打印。

package testee; 
import java.util.Scanner; 


public class Testee { 

    public static void main(String[] args) { 

     new C(); 

    } 
} 


class A{ 

    int a=10; 

    A(){ 

     System.out.println(a); 
    } 

} 


class B extends A{ 

    int a=13; 

    B(){ 

     System.out.println(a); 
    } 

} 


class C extends B{ 

    int a=21; 

    C(){ 

     System.out.println(super.a); 
    } 
} 

回答

3
System.out.println(((A)this).a); 

在一個繼承hierarchie同名多次有場被稱爲「隱藏字段」。

訪問字段(和靜態方法)基於所使用的引用的(靜態)類型。所以這意味着如果你在參考(這裏是這個)中輸入你想要的類型(在這種情況下爲A)並且訪問該字段,那麼你將獲得屬於A的字段。

如果將C分配給a變量。如果變量是A類型的,你將得到A.a.

總之:請不要在生產代碼中使用隱藏域

+0

感謝您aloooot的幫助......但我無法理解這段代碼...請clerify我... –