2011-09-27 168 views
0

如果我有一個類,比方說,從DialogFragment擴展並定義它的自定義構造函數,爲什麼我應該定義一個默認的類?如果發生運行時更改,我不會收到錯誤消息。爲什麼我需要定義自定義構造函數?

+1

你可以重新說一句,所以它更清楚一點嗎? – vickirk

回答

3

懷疑的問題是,在Java中,除非你指定一個自己編譯器爲您創建參數的構造函數。如果Android中的某些內容需要無參數的構造函數,那麼或者您都不需要自己聲明任何構造函數您需要顯式聲明無參數構造函數。

與Java語言規範的section 8.8.9

如果一個類不包含任何構造函數聲明,則將自動提供一個默認的構造函數不帶參數:

  • 如果所聲明的類原始類Object,那麼默認的構造函數有一個空的體。
  • 否則,默認構造函數不接受任何參數,只調用沒有參數的超類構造函數。

這是否使事情清楚?我不太瞭解Android知道爲什麼需要無參數構造函數,但大概是這樣的,可以通過反射創建實例,而無需爲構造函數參數指定任何參數。

0

構造函數可能包含在創建對象時運行的代碼。它有點像你想要完成的設置代碼,所以對象已經準備好了它應該做的事情。

相關問題