在Java中,多態(Polymorphism)是面向對象編程的一個重要特性,它允許一個類的引用變量指向該類的任何子類的實例。多態提供了一種靈活的結構,使得代碼可以更加通用和可擴展。
多態的主要特點包括:
方法重寫(Method Overriding):子類可以重寫父類的方法,以實現不同的功能。當調用子類的這個方法時,會執行子類的實現,而不是父類的實現。
接口實現(Interface Implementation):一個類可以實現多個接口,從而實現多種功能。接口定義了一組方法,這些方法在實現類中必須被重寫。
抽象類(Abstract Class):抽象類是一種特殊的類,它不能被實例化。抽象類可以包含抽象方法(沒有具體實現的方法)和非抽象方法。子類必須實現抽象類中的所有抽象方法。
動態綁定(Dynamic Binding):在運行時,根據對象的實際類型來確定調用哪個方法。這使得我們可以使用父類類型的引用變量來調用子類的方法,而不需要知道具體的子類類型。
多態的優點:
示例:
class Animal {
public void makeSound() {
System.out.println("The animal makes a sound");
}
}
class Dog extends Animal {
@Override
public void makeSound() {
System.out.println("The dog barks");
}
}
class Cat extends Animal {
@Override
public void makeSound() {
System.out.println("The cat meows");
}
}
public class Main {
public static void main(String[] args) {
Animal myAnimal = new Dog();
myAnimal.makeSound(); // 輸出 "The dog barks"
myAnimal = new Cat();
myAnimal.makeSound(); // 輸出 "The cat meows"
}
}
在這個例子中,Dog
和 Cat
類都繼承了 Animal
類,并重寫了 makeSound()
方法。我們可以使用 Animal
類型的引用變量來指向 Dog
或 Cat
的實例,并調用它們的 makeSound()
方法。這就是多態的體現。