Re: [問題] 有關建構子的問題....

看板java作者 (痞子軍團團長)時間19年前 (2006/03/03 11:53), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串4/9 (看更多)
※ 引述《TonyQ (骨頭)》之銘言: : ※ 引述《tonyrao (tonyrao)》之銘言: : : 小弟有個問題想問...何為建構子...建構子有什麼用途...?? : : 小弟看了Thinking in JAVA這本書有提到最根本的解釋... : : 每個class都可以透過建構子的行為達到初始化的動作... : : 小弟的問題是...為何要有這樣的動作 以及如果沒有建構子 會發生什麼事情?? : : 小弟是JAVA新手.....謝謝回答^^ : 簡單講講就好 ~"~ : 所有的東西都有一個開始,才會有結束。 : 人要有出生才會有死亡,物件也要有宣告才會有GC。 : 從這個角度來看,建構子就是讓一個物件出生的過程。 : 想想看,會執行建構子不是只有在new它的時候? :) : 如果缺少建構子,就有可能因為沒有變數的起始。 : 而產生nullpointerexpcetion 注意大小寫阿... 你這個 : 想想如果你沒有new物件就使用會發生甚麼事情。:) : 當然,變數的初始化並不限定在constructer(建構子)上作, : 只是那就不在這裡的討論範圍了,那是逆其道而行的作法。不值得推崇.. 你這篇的 "變數",應該改成該物件下的 field(attribute)比較好 不然,容易讓初學者混淆 @___@ 為了服務新手,舉個例子... 我宣告一個 Foo 的物件,基礎寫法是 Foo aVariable = new Foo(); 如果你只寫 Foo aVariable; 那麼,要嘛被警告沒有初始化(method 內的區域變數) 要嘛就是執行時產生 nullPointerException(物件的 field) 所以,你在 new Foo(); 的時候 基本上你不知道 Foo 裡頭有沒有 "重新" 寫 constructer (別忘了每個物件的老祖宗 java.lang.Object) 好,所以,如果你的 Foo 類別長的像這樣 class Foo{ //懶惰點用 public... 可以少寫幾行程式碼 public Object field; public int primitive; } 那麼,你 Foo aVariable = new Foo(); 然後又 System.out.println(aVariable.primitive); 會得到 0 但是,如果改 println(aVariable.field); 就會出現 TonyQ 講的內容 然後,你接著回去看 TonyQ 的文章內容... 以上... ==== 不怎麼情願地 local save -- 侃侃長論鮮窒礙 網站:http://www.psmonkey.idv.tw 眾目睽睽無心顫 個人版:telnet://legend.twbbs.org 煢居少聊常人事 殺頭容易告白難 歡迎參觀 Java 版(@ptt.cc)精華區 \囧/ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.204.16.17
文章代碼(AID): #141xsgvX (java)
討論串 (同標題文章)
文章代碼(AID): #141xsgvX (java)