Java知識小計 - 多態(tài)

Java 多態(tài)定義

多態(tài)是同一個行為具有多個不同表現(xiàn)形式或形態(tài)的能力。

多態(tài)就是同一個接口,使用不同的實例而執(zhí)行不同操作

多態(tài)的優(yōu)點

1. 消除類型之間的耦合關(guān)系

2. 可替換性

3. 可擴充性

4. 接口性

5. 靈活性

6. 簡化性

多態(tài)存在的三個必要條件

繼承

重寫

父類引用指向子類對象(比如:Parent p = new Child())

當使用多態(tài)方式調(diào)用方法時,首先檢查父類中是否有該方法,如果沒有,則編譯錯誤;如果有,再去調(diào)用子類的同名方法。

多態(tài)的好處:可以使程序有良好的擴展,并可以對所有類的對象進行通用處理。

下面的列子很好的理解多態(tài)?

public class Test {

?public static void main(String[] args)?

{?

? ? ? ?show(new Cat()); // 以 Cat 對象調(diào)用 show 方法?

? ? ? ?show(new Dog()); // 以 Dog 對象調(diào)用 show 方法

? ? ? ?Animal a = new Cat();? // 向上轉(zhuǎn)型? ? ??

? ? ? ? a.eat();? ? ? ? ? ? ? // 調(diào)用的是 Cat 的 eat? ? ??

? ? ? ? Cat c = (Cat)a;? ? ? ? // 向下轉(zhuǎn)型? ? ? ?

? ? ? ? ?c.work();? ? ? ? // 調(diào)用的是 Cat 的 work? }?

? ? public static void show(Animal a)? {? ? ?

? ? ? ? ? ? ? ? ? a.eat();?

? ? ? ? ? ? ? ? // 類型判斷? ??

? ? ? ? ? ? ?if (a instanceof Cat)? {? // 貓做的事情? ? ? ?

? ? ? ? ? ? ? Cat c = (Cat)a;?

? ? ? ? ? ? ? ?c.work();?

? ? ? ? } else if (a instanceof Dog) { // 狗做的事情? ? ??

? ? ? ? ? ? ? ? Dog c = (Dog)a;?

? ? ? ? ? ? ? ? c.work();?

? ? ? ? }?

? ? }?

?}?

abstract class Animal {?

? ? ? ? ?abstract void eat();?

?}?

? class Cat extends Animal {?

? ? ? ? ?public void eat() {?

? ? ? ? ? ? ? ? ?System.out.println("吃魚");?

? ? }?

? ? public void work() {?

? ? ? ? ? ? ? System.out.println("抓老鼠");?

? ? }? }?

? class Dog extends Animal {?

? ? public void eat() {?

? ? ? ? System.out.println("吃骨頭");?

? ? }?

? ? public void work() {?

? ? ? ? System.out.println("看家");?

? ? }? }


多態(tài)的實現(xiàn)方式

方式一:重寫:

這個內(nèi)容已經(jīng)在上一章節(jié)詳細講過,就不再闡述,詳細可訪問:可以看小計2。

方式二:接口

1. 生活中的接口最具代表性的就是插座,例如一個三接頭的插頭都能接在三孔插座中,因為這個是每個國家都有各自規(guī)定的接口規(guī)則,有可能到國外就不行,那是因為國外自己定義的接口類型。

2. java中的接口類似于生活中的接口,就是一些方法特征的集合,但沒有方法的實現(xiàn)。

方式三:抽象類和抽象方法

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容