class Animal {
public void makeSound() {
System.out.println("Animal makes a sound");
}
}
class Dog extends Animal {
@Override
public void makeSound() {
System.out.println("Dog barks");
}
}
class Cat extends Animal {
@Override
public void makeSound() {
System.out.println("Cat meows");
}
}
public class Main {
public static void makeAnimalSound(Animal animal) {
animal.makeSound();
}
public static void main(String[] args) {
Dog dog = new Dog();
Cat cat = new Cat();
makeAnimalSound(dog);
makeAnimalSound(cat);
}
}
多态的实现原理
- 继承:
Dog
和Cat
类继承自Animal
类,它们拥有Animal
类的属性和方法,并可以重写Animal
类中的方法。
- 重写:
Dog
和Cat
类重写了Animal
类中的makeSound
方法,提供了各自特定的实现。
- 向上转型:在
makeAnimalSound
方法中,参数类型是Animal
,但可以传递Dog
或Cat
的实例,这就是向上转型。此时编译器只知道参数是Animal
类型,运行时会根据实际对象(Dog
或Cat
)的类型来调用对应的makeSound
方法。这就是多态的体现,即同一方法调用,根据对象实际类型的不同,执行不同的行为。