Java多型實現的必要條件

zhangvalue發表於2020-09-30

    多型分為編譯時多型和執行時多型。其中編輯時多型是靜態的,主要是指方法的過載,它是根據引數列表的不同來區分不同的函式,通過編輯之後會變成兩個不同的函式。而執行時多型是動態的,它是通過動態繫結來實現的,也就是我們所說的多型性。

在 java 物件導向中,Java 主要採用執行時多型,實現的必要條件為(AC)
A.要有繼承
B.要有過載
C.要有父類引用指向子類物件(向上轉型)
D.要有包

過載與重寫是 Java 多型性的不同表現。
  重寫是父類與子類之間多型性的表現,在執行時起作用(動態多型性,譬如實現動態繫結)
  而過載是一個類中多型性的表現,在編譯時起作用(靜態多型性,譬如實現靜態繫結)。

多型的要點:

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

2.多型存在要有3個必要條件:繼承、方法重寫、父類引用指向子類物件。

3.父類引用指向子類物件後,用該父類引用呼叫子類重寫的方法,此時多型就出現了。

關於使用使用父類引用指向子類物件:https://zhangvalue.blog.csdn.net/article/details/106269444

public class TestAnimal {
    public static void main(String[] args) {
        Animal a = new Animal();
        animalCry(a);

        Dog d = new Dog();
        animalCry(d);

        Cat t = new Cat();
        animalCry(t);
    }

    //多型的關鍵,通過父類的引用呼叫子類重寫的方法。
    static void animalCry(Animal a) {
        a.shout();
    }
}
class Animal{
    public void shout() {
        System.out.println("animal 叫了一聲");
    }
}

class Dog extends Animal{
    public void shout() {
        System.out.println("dog 汪汪汪!");
    }
}

class Cat extends Animal{
    public void shout() {
        System.out.println("cat 喵喵喵!");
    }
}

相關文章