我已搜查這個很多,得到堆棧溢出這個答案 given answer here爲什麼構造函數使用,爲什麼不總是使用變量的簡單初始化?
- 指出,我們可以同時使用構造函數和簡單的初始化
但我想這
的答案- 但爲什麼使用構造函數初始化,如果它通過編譯自動完成r!
我已搜查這個很多,得到堆棧溢出這個答案 given answer here爲什麼構造函數使用,爲什麼不總是使用變量的簡單初始化?
但我想這
的答案構造函數的簡單定義:
初始化類的對象的特殊方法。始終且僅與new
關鍵字一起使用,以創建類的實例。
但爲什麼使用構造函數初始化,如果它通過 編譯器自動完成!
如果您尚未實現構造函數,構造函數將由編譯器初始化(默認構造函數)。
那麼,爲什麼我們需要實現一個構造函數呢?
作爲例子:
考慮在java.awt
包,它提供了幾種不同的構造的Rectangle
類,所有命名Rectangle()
,但每個與來自不同數量的參數,或者參數的不同類型新的Rectangle
對象將獲得其初始狀態。下面是從java.awt.Rectangle
類的構造函數簽名:
public Rectangle()
public Rectangle(int width, int height)
public Rectangle(int x, int y, int width, int height)
public Rectangle(Dimension size)
public Rectangle(Point location)
public Rectangle(Point location, Dimension size)
public Rectangle(Rectangle r)
如果你的成員變量是private
(安全原因)?如果您不想讓其他類處理成員變量,則必須使用getter和setter,但首先可以使用構造函數初始化它,然後在需要時可以使用getter和setter來更改它。更改/更新它。
要創建新的對象,我們必須運行constructor.If我們創建自動默認的構造函數編譯器添加默認constructor.But當我們想運行paramaetrized構造我們在類中定義..
我不明白讀完這個問題和答案後你還不清楚什麼。 –
最簡單的答案爲他們分配默認值,例如int類型變量總是分配給0,如果你想要默認值應該是1,當你使用「」(空字符串)初始化類似字符串的構造函數中的實例變量時,你有好處,必須關心空指針。 – Abhishek