3.(10分)定义一个类Animal,它有一个makeSound()方法,打印出动物叫的声音。然后定义两个子类Dog和Cat继承Animal,分别重写makeSound(方法,使 得Dog类打印“Woof”,Cat类打印"Meow”。编写测试代码,展示多态的使用。
时间: 2024-11-06 07:14:44 浏览: 48
首先,我们定义一个名为`Animal`的基本类,它包含一个名为`makeSound()`的方法:
```java
public abstract class Animal {
public void makeSound() {
System.out.println("这是动物的声音");
}
}
```
接下来,我们创建两个子类`Dog`和`Cat`,它们都继承自`Animal`并覆盖了`makeSound()`方法:
```java
public class Dog extends Animal {
@Override
public void makeSound() {
System.out.println("Woof");
}
}
public class Cat extends Animal {
@Override
public void makeSound() {
System.out.println("Meow");
}
}
```
现在,我们可以编写测试代码来演示多态的使用:
```java
public class Main {
public static void main(String[] args) {
// 创建Animal类型的引用,并赋值给Dog和Cat实例
Animal dog = new Dog();
Animal cat = new Cat();
// 使用多态调用makeSound()方法
dog.makeSound(); // 输出 "Woof"
cat.makeSound(); // 输出 "Meow"
// 同样,这里通过父类引用,调用了各自子类的特定方法
animal.makeSound(); // 这里animal是Animal类型的引用,实际执行的是Dog或Cat的makeSound()
}
}
```
在这个例子中,当我们通过`Animal`类型的引用调用`makeSound()`方法时,由于多态性,实际运行的是子类`Dog`或`Cat`的实现,这就是多态性的体现。
阅读全文