推 BaiYe: 我不是強者 無法給甚麼想法 但是可以先看看這篇文章 12/20 00:55
→ BaiYe: 也許看完就懂了~~ 至少我那時候看完後 對static更認識了! 12/20 00:56
推 hegemon: static method是看Class,而不是instance... 12/20 02:50
→ hegemon: 所以aInstance.doSth()還是執行A的doSth... 12/20 02:52
→ hegemon: 不過這種寫法一般來說是會被Eclipse警告的... 12/20 02:52
→ hegemon: 在真的寫code時,不要用instance去執行static method 12/20 02:53
→ cha122977: static method無法被Override 12/20 02:55
推 yfr: 用這樣的例子其實跟static沒什麼關係 12/20 14:10
→ yfr: 首要你要先搞懂Class field, method跟Instance field, method 12/20 14:13
→ yfr: 講的粗略一點,static修飾子會讓field, method成為Class的 12/20 14:16
→ yfr: 那麼你不需要new出來,就能用Class.var, Class.method存取 12/20 14:17
→ yfr: 同時這東西在記憶體中也是唯一的,要注意thread-safe的問題 12/20 14:18
→ yfr: 反之如果不加static就是Instance field, method 12/20 14:20
→ yfr: 要取得field或method就必須new出來,例如 12/20 14:21
→ yfr: Class c = new Class();用c.var(public), c.method(public)叫 12/20 14:24
推 Kenqr: A aInstance = null; aInstance.doSth(); 12/20 14:41
→ Kenqr: 上面這樣也是能跑的,因為呼叫static method只看class 12/20 14:41
→ Kenqr: 所以呼叫static method請直接用class名呼叫,以免造成混淆 12/20 14:42
推 fuchs: Static 只和class有關,和instance無關 12/20 23:18
→ tubbysong: C宣告類別 cInstance物件名 = new建立空間的關鍵字 C() 12/23 01:45
→ tubbysong: new C();單純創造空間時的初始化處理,不決定物件 12/23 01:49