DYA9面向对象中--多态
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                DYA9面向对象中--多态
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                多態(polymorphic)
?
多態可以提高代碼的復用性,利于代碼維護
方法或對象具有多種形態。是面向對象的第三大特征,多態是建立再封裝和繼承基礎之上的
1,方法的多態
重寫和重載就體現多態
?
2,對象的多態(核心)
***1,一個對象的編譯類型和運行類型可以不一致***
***2,編譯類型在定義對象時,就確定了,不能改變***
***3,運行類型是可以變化的***
***4,編譯類型看定義時 = 號的左邊, 運行類型看 = 號的右邊***
?
使用多態機制,可以統一的管理主人喂食的問題
public void feed(Animal animal , Food food)
{
}
?
用父類,可以指向(接收)子類創建對象傳入的數據,無需每個子類定義一個方法(傳入單個子類對象),直接用父類的編譯類型即可
多態注意事項和細節
多態的前提是:兩個對象(類)存在繼承關系
多態的向上轉型:
1,本質:父類的引用指向了子類的對象
2,語法:父類類型 引用名 = new 子類類型();
3,特點:編譯類型看左邊,運行類型看右邊。
可以調用父類中的所有成員(需遵守訪問權限);
不能調用子類中特有成員;
最終運行效果看子類的具體實現!
structure結構
多態的向下轉型:
1,語法:子類類型 引用名 = (子類類型) 父類引用;
2,只能強轉父類的引用,不能強轉父類的對象
3,要求父類的引用必須指向的是 當前目標類型的對象
4,當向下轉型后,可以調用子類類型中所有的成員
屬性沒有重寫之說!屬性的值直接看編譯類型
instanceOf 比較操作符,用于 判斷對象的類型是否為XX類型或XX類型的子類型(判斷的是對象的運行類型)
Java重要特性:動態(dynamic)綁定機制
1,當調用對象方法的時候,該方法會和該對象的內存地址(運行類型)綁定
2,當調用對象屬性時,沒有動態綁定機制,哪里聲明,哪里使用
、
多態的應用
1,多態數組
數組的定義類型為父類類型,里面保存的實際元素類型為子類類型
?
?
?
多態參數
方法定義的形參類型為父類類型,實參類型允許為子類類型
?
總結
以上是生活随笔為你收集整理的DYA9面向对象中--多态的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 内推专栏来了
- 下一篇: 线程池原理——高频面试题
