Java多态课堂练习题
Java多态课堂练习题
题目:动物乐园的多态展示
背景设定:
设计一个动物乐园程序,展示不同类型动物的行为特点,要求使用多态特性实现。
1. 基础类设计(已给出部分代码)
// 基类:动物
abstract class Animal {
protected String name;
public Animal(String name) {
this.name = name;
}
public abstract void makeSound();
public void eat() {
System.out.println(name + " is eating");
}
}
// 接口:可表演的
interface Performable {
void performTrick();
}
2. 题目要求
-
实现具体动物类:
- 创建至少3个Animal的子类(如Lion、Elephant、Parrot等)
- 其中一个类需要实现Performable接口
- 每个类需要:
- 实现makeSound()方法,输出该动物特有的叫声
- 可以添加特有的方法(如Lion的roar())
-
编写测试类:
- 创建Animal数组,包含各种动物实例
- 使用循环遍历数组:
- 调用每个动物的makeSound()
- 调用eat()
- 检查是否是Performable实例,如果是则调用performTrick()
-
多态体现(简答题):
- 程序中哪些地方体现了多态性?
- 向上转型和向下转型分别发生在哪里?
3. 示例代码结构(不完整,供参考)
class Lion extends Animal {
public Lion(String name) {
super(name);
}
@Override
public void makeSound() {
System.out.println(name + " says: Roar!");
}
public void roar() {
System.out.println(name + " is roaring loudly!");
}
}
// 请补充其他动物类...
public class ZooShow {
public static void main(String[] args) {
Animal[] animals = {
new Lion("Simba"),
// 添加其他动物实例
};
// 遍历数组展示多态行为
}
}
4. 预期输出示例
Simba says: Roar!
Simba is eating
Polly says: Squawk!
Polly is eating
Polly performs: Sing a song!
Dumbo says: Trumpet!
Dumbo is eating
5. 进阶挑战(可选)
- 添加一个Trainer类,包含train(Performable)方法
- 实现方法重载:feed(Animal)和feed(Lion)(展示编译时多态)
- 使用instanceof检查特定动物类型并调用特有方法
6. 评分标准
项目 | 分值 | 说明 |
---|---|---|
类设计完整性 | 30 | 至少3个动物类,1个实现接口 |
多态正确实现 | 30 | 正确使用向上转型和接口调用 |
测试类逻辑 | 20 | 数组遍历和类型检查逻辑正确 |
代码规范 | 10 | 命名规范,注释清晰 |
简答题回答 | 10 | 准确指出多态体现点 |
提示:多态主要体现在父类引用指向子类对象,以及接口引用指向实现类对象时,调用方法会执行实际对象类型的方法实现。