2016-07-09 11 views
2

は私は3クラスABCクラスBはAを拡張しており、クラスCは、私はclass Aの整数a現在の値を取得し、class Cでその値を印刷したいB.Superキーワードで変数の値を取得するにはどうすればよいですか?

延びています。私の最初の選択は、superのキーワードを使って印刷することです。継承hierarchieで複数回が「隠しフィールド」と呼ばれ、同じ名前のフィールドを持つ

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); 

フィールド(および静的メソッド)へのアクセスは、使用される参照の(静的な)タイプに基づいています。したがって、参照(ここではこれ)にタイプ(この場合はA)をキャストして、そのフィールドにアクセスすると、Aに属するフィールドが得られます。

Cを変数。変数の型がAの場合は、Aaを取得します。

とにかく:は、生産コードで助けをaloooot

+0

おかげであなたを隠しフィールドを使用しないでください...しかし、私はこのコードを理解することができないよ...私をclerifyてください... –

関連する問題