2016-03-19 10 views
3

第2レベルの子クラスのスーパークラスコンストラクタを使用する場合、引数は祖父母コンストラクタまたは直接の親コンストラクタに渡されますか?孫クラスのスーパークラスコンストラクタを呼び出し、親または祖父母コンストラクタを呼び出しますか?

//top class 
public First(type first){ 
    varFirst = first; 
} 

//child of First 
public Second(type second){ 
    super(second); //calls First(second) 
} 

//child of Second 
public Third(type third){ 
    super(third); //calls First(third) or Second(third)? 
} 
+0

(命名規則に従ってクラスタイプ)タイプを想定して同じである:

public class First { public First(String first) { System.out.println("in first"); } } public class Second extends First { public Second(String second) { super(second); System.out.println("in second"); } } public class Third extends Second { public Third(String third) { super(third); System.out.println("in third"); } public static void main(String[] args) { new Third("yay!"); } } 

出力を、あなたが取得したい:これは、コンストラクタで、いくつかのprint文を追加する場合は、自分自身のために参照することは非常に簡単ですvarFirstはTypeのインスタンスでもあります。次に** Ex **サンプルの例を試してみましょう:typeを** int **に置き換え、各コンストラクタでSystem.out.println(intValue)を置き換えます。 - >コンストラクター3は、* 2 *の値をSecondに渡し、最初にSYSoutを印刷すると、First-Second-Thirdの順序で印刷されます(短い3番目の呼び出しは2番目のBUT Secondを呼び出すだけで、 –

答えて

4

superは、直接の親のコンストラクタを呼び出します。したがってsuperのコールでThirdを呼び出すとSecondのコンストラクタが呼び出され、次にFirstが呼び出されます。

in first 
in second 
in third 
関連する問題