2013-08-04 80 views
1

我有下面的代碼,它不會編譯。編譯錯誤繼承

public class P { 
    private int num; 
    P(int n) { 
     this.num = n; 
    } 
} 

public class Q extends P { 
    private int i; 
    public Q() { 
     i = 0; 
    } 
} 

修復第二種方法,以便它可以編譯。

回答

1

調用超級構造函數:

public Q() { 
    super(42); // <-- 
    i = 0; 
} 

你可以閱讀更多關於superhere

1

您需要添加默認的構造函數中P使它編譯

P() { 
    this.num = 0; // some default value 
} 
+1

但我需要添加在Q不P –

0

在代碼中,編譯器在Q類中寫入super()關鍵字,即time控件將進入P類並調用構造函數,但P類有一個參數constructor.so,您可以將super()關鍵字與任何數字,因爲P類構造函數具有int類型的參數。

class P { 
    private int num; 
    P(int n) { 
    this.num = n; 
    } 
    } 
public class Q extends P { 
    private int i; 
    public Q() { 
    super(20); 
    i = 0; 
    } 
    }