2017-05-31 51 views
1

我已搜查這個很多,得到堆棧溢出這個答案 given answer here爲什麼構造函數使用,爲什麼不總是使用變量的簡單初始化?

  • 指出,我們可以同時使用構造函數和簡單的初始化

但我想這

的答案
  • 但爲什麼使用構造函數初始化,如果它通過編譯自動完成r!
+2

我不明白讀完這個問題和答案後你還不清楚什麼。 –

+1

最簡單的答案爲他們分配默認值,例如int類型變量總是分配給0,如果你想要默認值應該是1,當你使用「」(空字符串)初始化類似字符串的構造函數中的實例變量時,你有好處,必須關心空指針。 – Abhishek

回答

5

構造函數的簡單定義:

初始化類的對象的特殊方法。始終且僅與new關鍵字一起使用,以創建類的實例。

  1. 具有與該類名稱相同的名稱。
  2. 可以帶一個或多個參數。
  3. 沒有回報價值,甚至無效。
  4. 默認構造函數不帶參數。
  5. 存在多個構造函數(方法重載)。

但爲什麼使用構造函數初始化,如果它通過 編譯器自動完成!

如果您尚未實現構造函數,構造函數將由編譯器初始化(默認構造函數)。

那麼,爲什麼我們需要實現一個構造函數呢?

  • 它的任務是告訴所有的局部變量的初始值, 並可能在類中開始另一種方法做 更多的東西朝類的目的。
  • 取決於您擁有的數據,即可用的數據。
  • 創建對象的不同方法。
  • 所有的類變量都必須用構造函數初始化。

作爲例子:

  • 考慮在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來更改它。更改/更新它。

1

要創建新的對象,我們必須運行constructor.If我們創建自動默認的構造函數編譯器添加默認constructor.But當我們想運行paramaetrized構造我們在類中定義..

相關問題