當創建子類,
- 爲什麼我要創建一個構造函數,並在每個構造函數寫超?
- 如果我的行爲與超類相似,我不希望繼承它們嗎?
當創建子類,
實際上,java總是爲您的子類創建新的構造函數,但僅限於默認的無參數構造函數。如果您的類具有默認(無參數)構造函數以外的構造函數,則必須再次定義它們...構造函數並不是行爲方法,而是對象初始化(對於具有新屬性的子類可能會發生變化)
「Always」不正確。爲沒有構造函數聲明的類提供了默認構造函數。 –
對,謝謝:) – Slash
默認無參數默認情況下,構造函數是繼承和調用的。如果你想調用另一個,你可以使用super()。如果默認構造函數不能使用,則必須使用one4的超級構造函數
構造函數永遠不會被繼承。超類的無參數構造函數將由子類的默認構造函數調用,如果有的話。 –
構造函數與類名稱具有相同的名稱,並且如果您能夠將它們繼承到子類中,則它們不能再是構造函數的子類。雖然默認的無參數構造函數總是被繼承。
構造函數永遠不會被繼承。默認構造函數調用超類的無參數構造函數。 –
構造函數被調用來從類藍圖創建對象,即初始化類的數據成員。如果子類都繼承一個構造函數,然後同時調用子類,你需要有對父類的數據成員的知識太多。這不是人們在現實生活中會看到的。例如,如果您創建類型法拉利的目標,你一定會感興趣大約初始化般的速度,加速度參數,你就不會理會初始化一個Car對象的參數,即使法拉利汽車從繼承。因此,當調用法拉利的構造函數,你只會,只困擾法拉利的成員,而不是它的父類的成員。我希望能明確表達我的觀點。
可能已經回答了:http://stackoverflow.com/questions/1644317/java-constructor-inheritance – Eugene
你不必在每個構造函數中寫'super',必然。假定超類具有默認(公共無參數)構造函數。該子類,如果你在它沒有指定構造函數,隱式獲得一個默認的構造函數只是調用'超();'在編譯時。您明確創建的任何構造將不得不'超()隱式調用;'作爲它的第一行 - 除非在構造函數的第一行中,顯式調用重載的構造函數中的一個超類(例如,'超(myParameter );')。 – hotshot309