作者adrianshum (Alien)
看板java
标题Re: [问题] 每当宣告一个class
时间Mon Oct 10 17:38:20 2011
※ 引述《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
1F:推 lachtchlee:private var不必然一定是state有可能是peer object(s) 10/10 19:15
2F:→ adrianshum:我只是用很大略很high level 的说法而已 :P 10/10 23:10
3F:→ JuinT630: 10/12 17:21