程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> java-JAVA 新手 在多態時遇到這個問題

java-JAVA 新手 在多態時遇到這個問題

編輯:編程綜合問答
JAVA 新手 在多態時遇到這個問題

在《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方法,更別談多態(多態存在的條件),所以編譯無法通過.

最後關於多態的意義所在,目前的理解的,增加程序的可擴展性(重點),可維護性.

如果回答的不好請輕噴>_<.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved