在《Head First JAVA》這本書中看到一句話 :只有在引用變量的類型就是帶有某方法的類型時才能調用該方法。
那麼在使用多態時 比如public void Dog(Animal a){
a.bark(); }//其中Animal是Dog的父類 bark這個方法在Animal和Dog中都有 並且在b中進行了重寫
public void Dog(object a){
a.bark();}
那麼I和II 實際引用的方法是哪個呢 還是說第二個根本無法通過編譯呢??
同是java新手,分享一些我對多態的認識.
首先對於多態存在的條件:
1.父類引用子類對象,如: Animal a=new Dog();
2.子類中存在對父類方法的重寫.如:Dog類中重寫了Animal類的bark方法.
那麼 當調用 a.bark(); 實際上調用的是Dog類中重寫了的bark方法.
回過頭來看你的問題: 對於第一種情況:
如果 a沒有引用子類對象Dog 那麼它調用的是自身的bark.
如果a引用了子類對象Dog, 那麼它調用的是Dog的bark;
對於第二種情況,,有點雲裡霧裡的感覺!!!!
首先 ,雖然object是所有類的父類,但是它並沒有bark方法,更別談多態(多態存在的條件),所以編譯無法通過.
最後關於多態的意義所在,目前的理解的,增加程序的可擴展性(重點),可維護性.
如果回答的不好請輕噴>_<.