多態(tài)
多態(tài)是同一個行為具有多個不同表現(xiàn)形式或形態(tài)的能力呜魄。
現(xiàn)實中崎坊,比如我們按下 F1 鍵這個動作:
- 如果當(dāng)前在 Flash 界面下彈出的就是 AS 3 的幫助文檔砾莱;
- 如果當(dāng)前在 Word 下彈出的就是 Word 幫助捞蚂;
- 在 Windows 下彈出的就是 Windows 幫助和支持剪侮。
同一個事件發(fā)生在不同的對象上會產(chǎn)生不同的結(jié)果。
多態(tài)的優(yōu)點
- 消除類型之間的耦合關(guān)系
- 可替換性
- 可擴充性
- 接口性
- 靈活性
- 簡化性
多態(tài)存在的三個必要條件
- 繼承
- 重寫
- 父類引用指向子類對象
比如:
Parent p = new Child();
當(dāng)使用多態(tài)方式調(diào)用方法時音瓷,首先檢查父類中是否有該方法对嚼,如果沒有,則編譯錯誤绳慎;如果有纵竖,再去調(diào)用子類的同名方法。
多態(tài)的好處:可以使程序有良好的擴展杏愤,并可以對所有類的對象進行通用處理靡砌。
多態(tài)的實現(xiàn)方式
方式一:重寫:
這個內(nèi)容已經(jīng)在上一章節(jié)詳細講過,就不再闡述声邦,詳細可訪問:Java 重寫(Override)與重載(Overload)乏奥。-
方式二:接口
生活中的接口最具代表性的就是插座摆舟,例如一個三接頭的插頭都能接在三孔插座中,因為這個是每個國家都有各自 規(guī)定的接口規(guī)則恨诱,有可能到國外就不行,那是因為國外自己定義的接口類型照宝。
java中的接口類似于生活中的接口,就是一些方法特征的集合厕鹃,但沒有方法的實現(xiàn)兢仰。具體可以看 java接口 這一章節(jié)的內(nèi)容乍丈。
方式三:抽象類和抽象方法