当前位置: 首页 > news >正文

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. 题目要求

  1. 实现具体动物类

    • 创建至少3个Animal的子类(如Lion、Elephant、Parrot等)
    • 其中一个类需要实现Performable接口
    • 每个类需要:
      • 实现makeSound()方法,输出该动物特有的叫声
      • 可以添加特有的方法(如Lion的roar())
  2. 编写测试类

    • 创建Animal数组,包含各种动物实例
    • 使用循环遍历数组:
      • 调用每个动物的makeSound()
      • 调用eat()
      • 检查是否是Performable实例,如果是则调用performTrick()
  3. 多态体现(简答题):

    • 程序中哪些地方体现了多态性?
    • 向上转型和向下转型分别发生在哪里?

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. 进阶挑战(可选)

  1. 添加一个Trainer类,包含train(Performable)方法
  2. 实现方法重载:feed(Animal)和feed(Lion)(展示编译时多态)
  3. 使用instanceof检查特定动物类型并调用特有方法

6. 评分标准

项目分值说明
类设计完整性30至少3个动物类,1个实现接口
多态正确实现30正确使用向上转型和接口调用
测试类逻辑20数组遍历和类型检查逻辑正确
代码规范10命名规范,注释清晰
简答题回答10准确指出多态体现点

提示:多态主要体现在父类引用指向子类对象,以及接口引用指向实现类对象时,调用方法会执行实际对象类型的方法实现。

相关文章:

  • ​‌FireCrawl‌爬虫工具​, Craw4ai
  • 算法思想之模拟
  • LaTeX 的pstricks-add宏绘图练习
  • SJ7W5(四角号码7万五千字)取码细则V2
  • AWS Redshift的使用场景及一些常见问题
  • vue+flask+GNN+neo4j图书知识图谱推荐系统
  • 【SQL】COUNT... FILTER 的适用场景
  • 大模型在直肠癌诊疗全流程预测及应用研究报告
  • 已开源!CMU提出NavRL :基于强化学习的无人机自主导航和动态避障新方案
  • Threejs 奇幻几何体:边缘、线框、包围盒大冒险
  • 深入剖析 RocketMQ 中的 MappedFile 技术
  • 使用MCP服务通过自然语言操作数据库(vscode+cline版本)
  • [极客大挑战 2019]PHP 1
  • AI改变生活
  • 苍穹外卖day04
  • JPG同步删除RAW批处理文件
  • Vue ‘v-model‘ directives require the attribute value which is valid as LHS.
  • 八、自动化函数
  • 单基因高低分组和相关基因的GSEA等富集分析教程,代做分析
  • dev中使用auto的方法
  • 大卫·第艾维瑞谈历史学与社会理论③丨尼古拉斯·卢曼与历史研究
  • 巴勒斯坦民族权力机构主席:哈马斯必须移交武器
  • 民生访谈|让餐饮店选址合规性可查、社区妙趣横生,上海有实招
  • 朱守科已任西藏自治区政府党组成员、自治区公安厅党委书记
  • 当代读书人的暗号:不是拆快递,是拆出版社样书!|世界读书日特辑
  • 夸大事实拍视频发网络,镇雄两名网红勒索两千元删帖费被拘