Re: [問題] 每當宣告一個class
※ 引述《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
10/10 19:15, 1F
→
10/10 23:10, , 2F
10/10 23:10, 2F
→
10/12 17:21, , 3F
10/12 17:21, 3F
討論串 (同標題文章)