是的,Java中的多態可以調用子類方法。多態是面向對象編程的一個重要特性,它允許一個類的引用變量指向另一個子類的對象。當通過這個引用變量調用方法時,會根據實際的對象類型來動態地選擇調用哪個類的方法。這就是動態綁定或多態的概念。
以下是一個簡單的例子來說明多態如何調用子類方法:
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");
}
public void fetch() {
System.out.println("The dog fetches a ball");
}
}
public class Main {
public static void main(String[] args) {
Animal myAnimal = new Dog(); // 多態:引用變量指向子類對象
myAnimal.makeSound(); // 調用子類方法:The dog barks
myAnimal.fetch(); // 調用子類方法:The dog fetches a ball
}
}
在這個例子中,我們有一個Animal
基類和它的子類Dog
。Dog
類重寫了makeSound()
方法,并添加了一個新的方法fetch()
。在main
方法中,我們創建了一個類型為Animal
的引用變量myAnimal
,并將其指向一個Dog
對象。當我們通過myAnimal
調用makeSound()
方法時,實際上調用的是Dog
類中的makeSound()
方法。同樣,當我們調用fetch()
方法時,也是調用的Dog
類中的方法。這就是多態如何允許我們調用子類方法的。