abstract class Animal { public abstract void cry(); public abstract String getAnimalName(); } public class Cat extends Animal{ public void cry(){ System.out.println(" 喵喵~"); } public String getAnimalName(){ return "小猫"; } } public class Dog extends Animal{ public void cry() { System.out.println(" 汪汪~"); } public String getAnimalName(){ return "小狗"; } } public class Simulator { public void playSound(Animal animal){ System.out.print(animal.getAnimalName()+"的叫声:"); animal.cry(); } }
时间: 2025-06-25 14:03:10 浏览: 8
### Java 抽象类 `Animal` 的多态性实现
在 Java 中,抽象类可以通过定义通用的行为并允许子类实现特定功能来支持多态性。以下是关于如何使用抽象类 `Animal` 来展示多态性的详细说明。
#### 定义抽象类 `Animal`
抽象类 `Animal` 可以包含一些公共属性和方法,其中某些方法可以是抽象的,表示它们的具体实现由子类负责完成。以下是一个简单的抽象类定义:
```java
abstract class Animal {
private String name;
public Animal(String name) {
this.name = name;
}
public String getName() {
return name;
}
// 抽象方法,要求子类必须实现
public abstract void makeSound();
}
```
此代码片段展示了抽象类的基础结构[^1]。注意,抽象类中既可以包含普通方法(如 `getName()`),也可以包含抽象方法(如 `makeSound()`)。
#### 创建具体子类
为了演示多态性,我们可以创建两个具体的动物子类:`Dog` 和 `Cat`,分别继承自 `Animal` 并实现其抽象方法。
```java
class Dog extends Animal {
public Dog(String name) {
super(name);
}
@Override
public void makeSound() {
System.out.println(getName() + " says Woof!");
}
}
class Cat extends Animal {
public Cat(String name) {
super(name);
}
@Override
public void makeSound() {
System.out.println(getName() + " says Meow!");
}
}
```
这里可以看到,每个子类都提供了自己版本的 `makeSound()` 方法实现[^2]。
#### 使用多态性
通过将不同的子类对象赋值给父类引用变量,可以在运行时动态调用相应子类的方法,这就是多态的核心机制。
```java
public class Main {
public static void main(String[] args) {
Animal myDog = new Dog("Buddy");
Animal myCat = new Cat("Whiskers");
myDog.makeSound(); // 输出: Buddy says Woof!
myCat.makeSound(); // 输出: Whiskers says Meow!
List<Animal> animals = new ArrayList<>();
animals.add(myDog);
animals.add(myCat);
for (Animal animal : animals) {
animal.makeSound();
}
}
}
```
这段代码利用了多态特性,在同一个列表中存储不同类型的对象,并通过相同的接口调用了各自特有的行为[^4]。
---
### 总结
以上示例清晰地展现了如何借助抽象类与多态性设计灵活且易于扩展的应用程序架构。通过让多个子类共享同一套接口,同时又保留各自的独特逻辑,开发者能够构建更加模块化的解决方案。
阅读全文
相关推荐



















