Java知識小計 - 多態

Java 多態定義

多態是同一個行為具有多個不同表現形式或形態的能力。

多態就是同一個接口,使用不同的實例而執行不同操作

多態的優點

1. 消除類型之間的耦合關系

2. 可替換性

3. 可擴充性

4. 接口性

5. 靈活性

6. 簡化性

多態存在的三個必要條件

繼承

重寫

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

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

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

下面的列子很好的理解多態?

public class Test {

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

{?

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

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

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

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

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

? ? ? ? ?c.work();? ? ? ? // 調用的是 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("看家");?

? ? }? }


多態的實現方式

方式一:重寫:

這個內容已經在上一章節詳細講過,就不再闡述,詳細可訪問:可以看小計2。

方式二:接口

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

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

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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。