多態及實現方式
- 2020 年 3 月 10 日
- 筆記
什麼是多態?
一句話解釋多態:多態就是一個事物多種形態,就是同一符號或者名字在不同情況下具有不同解釋的現象。
多態是同一個行為具有多個不同表現形式或形態的能力。
多態就是同一個接口,使用不同的實例而執行不同操作,如圖所示:
多態性是對象多種表現形式的體現。比如下面這個例子:
現實中,比如我們按下 F1 鍵這個動作:
- 如果當前在 Flash 界面下彈出的就是 AS 3 的幫助文檔;
- 如果當前在 Word 下彈出的就是 Word 幫助;
- 在 Windows 下彈出的就是 Windows 幫助和支持。
同一個事件發生在不同的對象上會產生不同的結果。
為什麼需要多態?
我們知道,封裝可以隱藏實現細節,使得代碼模塊化;繼承可以擴展已存在的代碼模塊(類);它們的目的都是為了——代碼重用。代碼重用,也稱代碼復用, 就是說你把一個功能寫成一個模塊, 以便再次需要相同功能的時候,可以直接使用,而不用重新開發。
舉例: 假如你的網站需要驗證碼, 你就可以把驗證碼這個功能單獨提取出來以便復用。
通常代碼復用是通過類與對象來實現的, 這也是面向對象編程與面向過程編程最主要的區別之一。
作為面向對象的三大特性之一,多態也有代碼重用的功能,還有解決項目中緊耦合的問題,提高程序的可擴展性。
舉例:添加一個子類,繼承父類,重寫父類的方法。至此,該程序的擴展性得到了提升,而又不需要查看源代碼是如何實現的就可以擴展新功能。
多態的實現方式
1.用抽象類實現多態
-
抽象類和抽象方法實現多態性
-
父類提供一系列規定, 約束子類的行為
-
父類可以提供一些共性的行為
2.用接口實現多態
- 生活中的接口最具代表性的就是插座,例如一個三接頭的插頭都能接在三孔插座中,因為這個是每個國家都有各自規定的接口規則,有可能到國外就不行,那是因為國外自己定義的接口類型。
- java中的接口類似於生活中的接口,就是一些方法特徵的集合,但沒有方法的實現。
接口與抽象類的區別
抽象類是一類事物的高度聚合,那麼對於繼承抽象類的子類來說,對於抽象類來說,屬於“是”的關係;而接口是定義行為規範,因此對於實現接口的子類來說,相對於接口來說,是“行為需要按照接口來完成”。
參考鏈接
[1]https://www.runoob.com/java/java-polymorphism.html
[2]https://blog.csdn.net/ellen5203/article/details/87342706
[3]https://www.runoob.com/java/java-polymorphism.html