推 icydream: A a = new A(); 05/12 12:24
→ bachelorwhc: 1. 這不是多型 05/12 12:43
→ bachelorwhc: 2. A.F() 05/12 12:44
→ ssccg: 不行,B把A的method override掉之後,你就不可能在B的 05/12 13:10
→ ssccg: instance上呼叫A的實作,除了在B裡面用super以外 05/12 13:10
→ ssccg: 有些語言(C++,C#)會分要virtual method才會被override 05/12 13:20
→ ssccg: Java沒有分,叫到哪個只看instance不看reference 05/12 13:23
→ gpctv: 改method的名字就好啦!!! 05/12 14:36
→ gpctv: 不然就像一樓那樣新增一個Class !!! 05/12 14:36
→ gpctv: 不曉得原po是想問觀念還是寫程式遇到的問題 05/12 14:37
→ benson101: 是想釐清觀念 再請教一下 如果A,B都有宣告成員變數X 05/12 17:00
→ benson101: 那a.X是access到A的X還是B的X?謝謝! 05/12 17:02
→ NobleDino: 任何重複執行子類別 05/12 21:06
→ NobleDino: 多型的意義是,同樣的方法,子類別會自動做對的事 05/12 21:08
推 icydream: 是A的X,field member沒有多型 05/12 21:53
推 eric781101: (A) a.F() 記得可以cast成A 05/13 05:34
推 csieflyman: 最近看書學到 java的方法呼叫: non-virtual方法 例如 05/13 14:17
→ csieflyman: static方法 private方法 new物件的constructor方法 f 05/13 14:17
→ csieflyman: inal 方法及容易搞混的方法overloading 都是在編譯期 05/13 14:17
→ csieflyman: 就能知道要且決定要呼叫那一個方法 儲存在bytecode裡 05/13 14:17
→ csieflyman: 然後JVM照著執行 然而多型的 overriding 是執行期才 05/13 14:17
→ csieflyman: 能知道物件的具體型別 查詢 virtual method table 決 05/13 14:17
→ csieflyman: 定要呼叫那個方法 至於直接存取類別欄位根本不是方法 05/13 14:17
→ csieflyman: 呼叫 所以與多型無關 05/13 14:17