2013-05-01 42 views
1

是什麼代碼super()在構造函數中的含義是什麼?

super(); 

一個構造函數裏面呢?

例如,這裏是我的課

public abstract class Rectangle extends AbstractShape 
{ 

private double height, width; 

// Constructors... 
public Rectangle() 
{ 
    super(); //this is how i inherit that point! 
    height = -1; 
    width = -1; 
} 

構造是否有事情做與超類?

+2

然而,問題很明顯。所以,我很驚訝他現在對這個問題有7票反對。 – finneycanhelp 2013-05-01 16:27:14

+0

@finneycanhelp:至於:Nirbhay已經提到過,通過僅僅做一些研究(Google)就可以很容易地找到這個問題的答案......海事組織這就是降低成本的原因。 – home 2013-05-01 16:34:53

+0

好的。所以,將來要使用的谷歌關鍵字是:超級java構造函數 – finneycanhelp 2013-05-01 20:21:24

回答

2

它調用父類的構造函數

+0

即使在初始化時沒有添加超級類型的自我聲明,也是如此? – 2014-10-09 02:22:04

+1

@DavidDimalanta「如果一個構造函數沒有顯式地調用超類的構造函數,那麼Java編譯器會自動插入一個對超類的無參構造函數的調用,如果超類沒有無參構造函數,你會得到一個編譯時間錯誤。「 http://docs.oracle.com/javase/tutorial/java/IandI/super.html – KyleM 2014-10-09 14:45:45

0

呼叫​​明確地調用父類的構造,這裏的參數的構造函數用於AbstractShape。如果這個調用不在構造函數中,那麼Java爲你插入一個隱含的​​。

引述JLS, section 8.8.7

如果構造體不明確的構造 調用開始和正在申報的構造不是 原始類對象的一部分,然後在構造函數體隱式開始 與一個超類的構造函數調用「super();」,它的直接超類的構造函數的調用不帶參數。

相關問題