Re: [問題] 每當宣告一個class

看板java作者 (Alien)時間14年前 (2011/10/10 17:38), 編輯推噓1(102)
留言3則, 3人參與, 最新討論串2/2 (看更多)
※ 引述《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

10/10 19:15, , 1F
private var不必然一定是state有可能是peer object(s)
10/10 19:15, 1F

10/10 23:10, , 2F
我只是用很大略很high level 的說法而已 :P
10/10 23:10, 2F

10/12 17:21, , 3F
10/12 17:21, 3F
文章代碼(AID): #1EahqFmm (java)
文章代碼(AID): #1EahqFmm (java)