看板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