Re: [問題] 在類別中生成一個自己的實例(static用 …
※ 引述《godfat (godfat 真常)》之銘言:
: ※ 引述《Ronamtis (Tis)》之銘言:
: : 我的問題是:在 AccountDB 類別產生了一個 AccountDB 自己的實例,這到底是怎
: : 麼回事呢?是否因為 onlyInstance 被宣告成 static,只有在類別第一次被呼叫時
: : 會產生出來,所以不會發生無窮迴圈的問題?
: 說到這,我倒是真的幹過無窮產生的問題﹍不過這是題外話
: 你可以把 static 想成 class, 所以 static method => class method
: static field => class field
: class 當然只有一個,所以沒有問題,這是你的 class 去存取一個 instance,
: 不是 class 存取 class 也不是 instance 存取 instance.
: 個人認為這是 C 的禍害 :o
: 讓人困惑的 static 多重意義,java 早就沒有最早的 static 了
感謝諸位大大的回答,我也看了良葛格筆記和蔡學鏞先生寫的解說:
http://www.oreilly.com.tw/column_sleepless.php?id=j021
觀念比較清楚了!不過在蔡學鏞的解說中提到
如果某 class 的 class method 或 instance method 欲使用到某 instance 的
某 instance method,就必須在前面冠上此 instance 名稱,例如:obj.classMethod()
所以 static 函式成員使用非 static 函式成員的話會發生錯誤,因為沒有 this 參考,
但是可是自行加上物件名稱來使用非 static 的函式成員,例如 obj.instanceMethod()
囉?(不知道自己有沒有在鑽牛角尖 :p)
: : 沒用實體變數的 method (或物件?)不會佔用 heap 的空間,但是怎麼執行的呀?
: : 觀念很不清楚,不知道有沒有善心人士可以指點一下迷津...謝謝 :)
: 記憶體不是只有 heap 啊 :o
瞭解了 :p
--
☆ ★ . * ★ * ★ . ☆
. ★ ☆ ☆ * *
. ★ * . * . ★ .
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.119.44.232
討論串 (同標題文章)