Java创建一个基类Animal,它有一个方法makeSound()。然后创建两个子类Dog和Cat,它们分别重写makeSound()方法。最后创建一个测试类,演示向上转型和多态性。
时间: 2025-01-01 12:38:40 浏览: 17
在Java中,你可以按照以下步骤创建这个场景:
首先,定义一个基类`Animal`,包含一个抽象的`makeSound()`方法:
```java
abstract class Animal {
public abstract void makeSound();
}
```
接着,创建两个具体的子类`Dog`和`Cat`,它们继承自`Animal`并实现了`makeSound()`方法:
```java
class Dog extends Animal {
@Override
public void makeSound() {
System.out.println("Dog says Woof!");
}
}
class Cat extends Animal {
@Override
public void makeSound() {
System.out.println("Cat says Meow!");
}
}
```
现在,你可以在一个测试类中展示向上转型和多态性,比如`Test`类:
```java
public class Test {
public static void main(String[] args) {
Animal animal1 = new Dog(); // 向上转型
Animal animal2 = new Cat();
animal1.makeSound(); // 输出 "Dog says Woof!"
animal2.makeSound(); // 输出 "Cat says Meow!"
// 使用多态调用,这里传入的是Animal类型的引用,实际运行的是子类的方法
animal1.makeSound(); // 还会输出 "Dog says Woof!"
animal2.makeSound(); // 仍会输出 "Cat says Meow!"
}
}
```
在这个例子中,尽管`animal1`和`animal2`都是`Animal`类型的引用,但由于动态绑定(dynamic dispatch),当我们调用`makeSound()`时,实际上是执行了各自子类的实际实现。
阅读全文