Java學習筆記:【轉載】多態

參考文章:5.5 多態(polymorphism)

多態的要點:

  1. 多態是方法的多態,不是屬性的多態(多態與屬性無關)。

  2. 多態的存在要有3個必要條件:繼承,方法重寫,父類引用指向子類對象。

  3. 父類引用指向子類對象後,用該父類引用調用子類重寫的方法,此時多態就出現了。

代碼

class Animal {
    public void shout() {
        System.out.println("叫了一聲!");
    }
}
class Dog extends Animal {
    public void shout() {
        System.out.println("旺旺旺!");
    }
    public void seeDoor() {
        System.out.println("看門中....");
    }
}
class Cat extends Animal {
    public void shout() {
        System.out.println("喵喵喵喵!");
    }
}
public class TestPolym {
    public static void main(String[] args) {
        Animal a1 = new Cat(); // 向上可以自動轉型
        //傳的具體是哪一個類就調用哪一個類的方法。大大提高了程序的可擴展性。
        animalCry(a1);
        Animal a2 = new Dog();
        animalCry(a2);//a2爲編譯類型,Dog對象纔是運行時類型。
         
        //編寫程序時,如果想調用運行時類型的方法,只能進行強制類型轉換。
        // 否則通不過編譯器的檢查。
        Dog dog = (Dog)a2;//向下需要強制類型轉換
        dog.seeDoor();
    }
 
    // 有了多態,只需要讓增加的這個類繼承Animal類就可以了。
    static void animalCry(Animal a) {
        a.shout();
    }
 
    /* 如果沒有多態,我們這裏需要寫很多重載的方法。
     * 每增加一種動物,就需要重載一種動物的喊叫方法。非常麻煩。
    static void animalCry(Dog d) {
        d.shout();
    }
    static void animalCry(Cat c) {
        c.shout();
    }*/
}

結果

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章