看板 java 關於我們 聯絡資訊
※ 引述《m13m13m (奇怪 還沒收到??)》之銘言: : 請問: : 小弟以前在寫c++時,就被告誡一定要有constructor/ destructor/ : copy constructor 三個東西,無論如何。 告誡你的人明顯還漏了 assignment operator 不是一定 *要* 有, 而是一定 *會* 有. 就算你不寫, compiler 也會幫你生成 default 的. 只要default 的合用, 沒有一定要自己寫的道理. btw, 這和 Java 無關. 不談太多. : 現在java 有GC 不用destructor了,所以我認為 : "每當我宣告一個class 我就一定要有default constructor/ copy constructor : 還有每一個private var 的get和set" : 請問這句話有什麼需要補充或是增減的嗎? 謝謝! 什麼叫 "一定要有"? 1) Default ctor 是當你沒有 ctor 的時候自動生成的, 當你 有定義好 ctor, 就不會有 Default ctor. 2) Java 裡面沒有所謂 copy ctor. Copy ctor 在 language 的層面上和其他 ctor 沒有分別. 沒有定義也不會自動生成. 正常來說也沒有太多情況需要. 3) 如果你總是覺得 private var 一定就要有 setter/getter, 那麼你明顯是以非 OO 的思維去思考. 理想的做法是不要 setter/getter. 這不代表要 public variable, 而是根本 不要讓使用者直接操作你的 data. 你的 class 應該提供 operation, private var 只是裡面的 state 而已. 當然這是有很多例外的, 但至少你說一定要有 setter/getter 就一定是錯誤的說法. 所以, 你那句話要增減的, 就是要刪去整句說話. Alien -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.238.156.185
lachtchlee:private var不必然一定是state有可能是peer object(s) 10/10 19:15
adrianshum:我只是用很大略很high level 的說法而已 :P 10/10 23:10
JuinT630: 10/12 17:21