看板java
标 题Re: 请问final的实际用法
发信站KKCITY (Fri Jun 18 08:06:41 2004)
转信站ptt!ctu-reader!ctu-peer!news.nctu!netnews.csie.nctu!news.ee.ttu!news.n
※ 引述《[email protected] (.)》之铭言:
> 那请问一小段程式....
> final Worker w = new Worker(40);
> w.setHours(60);
> 这样里面的值会改变吗???
> ※ 引述《[email protected] (kvjo)》之铭言:
> > 那 你的意思是说
> > final clas 下的成员本来就有final属性了
> > 你如果还要再加final去修饰成员
> > 是多此一举
试试不就知道了吗?
答案是: 会改变的.
Java 没有像 C/C++ 的 const 的机制.
宣告一个 final variable 指的是它的值不会再改变.
记得宣告
Worker w;
中的 w 是什麽东西吗?
w *不是* Worker 的 object instance, 它只是一个 *object reference*
一个 object refernce 的所谓 不能改变 是指它不能再指向别的 object
instance. (懂 C++ 的人, 用 C++ 的比喻就是 Worker * const w; )
而不是指着的 object instance 不能改变 (C++ 中的 const Worker* w;)
Java 没有这种机制.
Alien
--
┌─────◆程式设计乐园◆─────┐ ╱ ╱  ̄ ▌ ̄  ̄ ╲╱ BBS 城邦
│ CSZone.kkcity.com.tw │ ╲ ╲ ╴ ▌ ▌ ▏ KK免费拨接
└──《From:202.72.0.45
》──┘ 电话:449-1999 帐号:kkcity 密码:kkcity