给我一个java多态的代码并详细解说
时间: 2024-03-16 22:43:47 浏览: 89
好的,下面是一个Java多态的代码示例,并详细解说:
```java
public class Animal {
public void makeSound() {
System.out.println("The animal makes a sound.");
}
}
public class Dog extends Animal {
@Override
public void makeSound() {
System.out.println("The dog barks.");
}
}
public class Cat extends Animal {
@Override
public void makeSound() {
System.out.println("The cat meows.");
}
}
public class Main {
public static void main(String[] args) {
Animal animal1 = new Animal();
Animal animal2 = new Dog();
Animal animal3 = new Cat();
animal1.makeSound();
animal2.makeSound();
animal3.makeSound();
}
}
```
这个代码示例展示了一个简单的多态应用场景。Animal是一个抽象的类,它有一个makeSound()方法,用来输出动物发出的声音。Dog和Cat是Animal的子类,它们分别重写了makeSound()方法,并输出狗和猫发出的声音。
在Main类的main()方法中,我们创建了三个Animal类型的对象,分别是Animal、Dog和Cat的实例。然后我们分别调用它们的makeSound()方法,输出它们发出的声音。
在这个例子中,我们使用了编译时多态和运行时多态。编译时多态是通过声明Animal类型的变量来实现的,我们可以将Dog和Cat的实例赋值给它们,这样在编译时就确定了变量的类型。而运行时多态是通过重写makeSound()方法来实现的,子类重写父类的方法,当我们调用子类的实例方法时,会执行子类的方法。
这个例子展示了多态的优势:我们可以使用父类类型的变量来引用子类对象,从而实现了代码的灵活性和可扩展性。如果我们需要新增一个动物的子类,只需要继承Animal类并重写makeSound()方法,就可以在不改变原有代码的情况下扩展程序的功能。
阅读全文