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

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);}@Overridepublic 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准确指出多态体现点

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

相关文章:

Java多态课堂练习题

Java多态课堂练习题 题目:动物乐园的多态展示 背景设定: 设计一个动物乐园程序,展示不同类型动物的行为特点,要求使用多态特性实现。 1. 基础类设计(已给出部分代码) // 基类:动物 abstract…...

SAP系统中的借货

问题:什么是借贷? 解答:记账符号反映的是各种经济业务数量的增加和减少。 二:怎么区分借贷增减? 解答:“借”和“贷”何时为增加、何时为减少,必须结合账户的具体性质才能准确说明…...

深入剖析Go Channel:从底层原理到高阶避坑指南|Go语言进阶(5)

文章目录 引言channel的底层数据结构channel操作原理发送操作(ch <- data)接收操作(<-ch) 常见陷阱及避坑指南1. 死锁问题2. 关闭channel的错误方式3. 内存泄漏4. nil channel特性5. 性能考量 最佳实践总结 引言 Channel是Go语言实现CSP并发模型的核心机制&#xff0c;提…...

OpenCV 图形API(31)图像滤波-----3x3 腐蚀操作函数erode3x3()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 使用3x3矩形结构元素腐蚀图像。 该函数通过使用中心作为锚点的3x3矩形结构元素来腐蚀源图像。腐蚀操作可以应用多次&#xff08;迭代&#xff0…...

5.5 GitHub数据秒级分析核心揭秘:三层提示工程架构设计解析

GitHub Sentinel Agent 分析报告功能设计与实现 关键词:GitHub 数据分析, 提示工程设计, Pull Request 分析, Issues 跟踪, 竞品对比 项目进展报告生成功能设计 报告生成模块是 GitHub Sentinel 的核心功能,通过三层嵌套式提示工程架构实现深度分析: #mermaid-svg-vdHRUan…...

【Java学习笔记】Java初级阶段代码规范

Java 初级阶段代码规范 1. 类、方法的注释&#xff0c;要以 javadoc 的方式来写。 2. 非 Java Doc 的注释&#xff0c;往往是给代码的维护者看的&#xff0c;着重告读者为什么这样写&#xff0c;如何修改&#xff0c;注重什么问题等 3. 使用 tab 操作&#xff0c;实现缩进&am…...

AI Agent开发大全第二十八课-MCP实现本地命令调用怎么做的?

开篇 MCP很强大,Client端一旦实现了稳定的连接和执行流程后任Server端随意改动都可兼容,这就是热插拨功能。 如果我们仅仅满足于MCP查点网上资料、读点图片即文字型的功能肯定是不能充分发挥MCP的强大之处的,正应了Google以及Anthropic最近的研究报告上说的:不要再在chat…...

macOS 上使用 Homebrew 安装和配置 frp 客户端

macOS 上使用 Homebrew 安装和配置 frp 客户端 (frpc) 指南 frp (Fast Reverse Proxy) 是一款高性能的反向代理应用&#xff0c;常用于内网穿透。本文将介绍在 macOS 上使用 Homebrew 安装 frpc&#xff0c;并进行配置和管理。 一、安装 frpc 使用 Homebrew 安装&#xff08;…...

为 docker 拉取镜像配置代理

为 Docker 配置代理&#xff0c;有 两个层面 的操作&#xff1a;(1) Docker 守护进程&#xff08;用于拉取镜像等操作&#xff09;&#xff0c;(2) Docker 容器内部&#xff08;容器内应用的网络流量&#xff09;。 我们这篇文章着重于前者&#xff0c;以下是详细步骤&#xff…...

A2A协议实现详解及示例

A2A协议概述 A2A (Agent2Agent) 是Google推出的一个开放协议&#xff0c;旨在使AI智能体能够安全地相互通信和协作。该协议打破了孤立智能体系统之间的壁垒&#xff0c;实现了复杂的跨应用自动化。[1] A2A协议的核心目标是让不同的AI代理能够相互通信、安全地交换信息以及在各…...

TDengine 语言连接器(Node.js)

简介 tdengine/websocket 是 TDengine 的官方 Node.js 语言连接器。Node.js 开发人员可以通过它开发存取 TDengine 数据库的应用软件。 Node.js 连接器源码托管在 GitHub。 Node.js 版本兼容性 支持 Node.js 14 及以上版本。 支持的平台 支持所有能运行 Node.js 的平台。 …...

ESP-IDF 开发框架:探索ESP32的强大底层世界

文章总结&#xff08;帮你们节约时间&#xff09; 介绍了ESP-IDF作为乐鑫ESP32系列芯片的官方开发框架。对比了Arduino、MicroPython和ESP-IDF三种ESP32开发方式的优缺点。详细讲解了ESP-IDF的核心特性和多层架构设计。展示了ESP-IDF的开发流程和应用场景。 你是否曾经好奇过…...

活动图与流程图的区别与联系:深入理解两种建模工具

目录 前言1. 活动图概述1.1 活动图的定义1.2 活动图的基本构成要素1.3 活动图的应用场景 2. 流程图概述2.1 流程图的定义2.2 流程图的基本构成要素2.3 流程图的应用场景 3. 活动图与流程图的联系4. 活动图与流程图的区别4.1 所属体系不同4.2 表达能力差异4.3 使用目的与语境4.4…...

如何在 Java 中对 PDF 文件进行数字签名(教程)

Java 本身并不原生支持 PDF 文件&#xff0c;因此若要对 PDF 进行数字签名&#xff0c;您需要使用一些专用的软件。本教程将演示如何使用 JPedal PDF 库来对 PDF 文件进行数字签名。 步骤&#xff1a; • 下载 JPedal 并将 Jar 文件添加到项目中 • 创建一个 PKCS#12 密…...

图片文本识别OCR+DeepSeekapi实现提取图片关键信息

用到的技术&#xff1a; 通过腾讯OCR文字识别&#xff0c;deepseek的api实现 目录 需求分析&#xff1a; 文字识别&#xff08;OCR&#xff09;具体实现步骤 起步工作 代码编写 deepseek整合消息&#xff0c;返回文本关键信息 起步工作 编写工具类 具体调用实现 具体…...

go 通过汇编分析函数传参与返回值机制

文章目录 概要一、前置知识二、汇编分析2.1、示例2.2、汇编2.2.1、 寄存器传值的汇编2.2.2、 栈内存传值的汇编 三、拓展3.1 了解go中的Duff’s Device3.2 go tool compile3.2 call 0x46dc70 & call 0x46dfda 概要 在上一篇文章中&#xff0c;我们研究了go函数调用时的栈布…...

解决Ubuntu Desktop 24.04 VMware中安装后不能全屏显示,只能居中的问题

Ubuntu Desktop 24.04 VMware中安装后不能全屏显示&#xff0c;只能居中。 sudo apt-get install open-vm-tools sudo apt-get install open-vm*...

【笔记ing】AI大模型-04逻辑回归模型

一个神经网络结构&#xff0c;其中的一个神经网络层&#xff0c;本质就是一个逻辑回归模型 深度神经网络的本质就是多层逻辑回归模型互相连接或采用一定的特殊连接的方式连接在一起构成的。其中每一个层本质就是一个逻辑回归模型。 逻辑回归模型基本原理 逻辑回归&#xff0…...

分布式ID生成方案的深度解析与Java实现

在分布式系统中&#xff0c;生成全局唯一的ID是一项核心需求&#xff0c;广泛应用于订单编号、用户信息、日志追踪等场景。分布式ID不仅需要保证全局唯一性&#xff0c;还要满足高性能、高可用性以及一定的可读性要求。本文将深入探讨分布式ID的概念、设计要点、常见生成方案&a…...

AF3 ProteinDataModule类解读

AlphaFold3 protein_datamodule 模块 ProteinDataModule 类继承自 PyTorch Lightning 数据模块(LightningDataModule),负责 ProteinFlow 数据的准备、加载、拆分、变换等逻辑封装在一起,便于训练过程中的统一管理和复现。 这个类承担了 AlphaFold3 训练和评估过程中的 数据…...

如何将一个8s的接口优化到500ms以下

最近换了个工作&#xff0c;刚入职就接了个活--优化公司自营app的接口性能&#xff0c;提升用户体验。 刚开始还以为是1s优化到500ms这种&#xff0c;或者500ms优化到200ms的接口&#xff0c;感觉还挺有挑战的。下好app体验了一下。好家伙&#xff0c;那个慢已经超过了我的忍耐…...

记录学习的第二十五天

今天终于又开始更新了。实在是星期六的蓝桥杯给了我一个大大的打击&#xff0c;今天终于好不容易缓过来了&#xff0c;可以好好学算法了。 还是老规划&#xff0c;力扣的每日一题。不过今天的每日一题我之前做过了&#xff0c;就又提交了一次来签到。 之后三道哈希表题目。 我一…...

linux电源管理(二),内核的CPUFreq(DVFS)和ARM的SCPI

更多linux系统电源管理相关的内容请看&#xff1a;https://blog.csdn.net/u010936265/article/details/146436725?spm1011.2415.3001.5331 1 简介 CPUFreq子系统位于drivers/cpufreq目录下&#xff0c;负责进行运行过程中CPU频率和电压的动态调整&#xff0c;即DVFS (Dynami…...

【LeetCode 热题 100】哈希 系列

&#x1f4c1;1. 两数之和 本题就是将通过两层遍历优化而成的&#xff0c;为什么需要两层遍历&#xff0c;因为遍历 i 位置时&#xff0c;不知道i-1之前的元素是多少&#xff0c;如果我们知道了&#xff0c;就可以通过两数相加和target比较即可。 因为本题要求返回下标&#xf…...

ES6学习04-数组扩展:扩展运算符、新增方法

一、扩展运算符 1. 2. eg: 3. 二、新增方法 1. arguments 元素组合 类似数组对象 2....

Redis存储“大数据对象”的常用策略及StackOverflowError错误解决方案

Hi&#xff0c;大家好&#xff0c;我是灰小猿&#xff01; 在一些功能的开发中&#xff0c;我们一般会有一些场景需要将得到的数据先暂时的存储起来&#xff0c;以便后面的接口或业务使用&#xff0c;这种场景我们一般常用的场景就是将数据暂时存储在缓存中&#xff0c;之后再…...

在轨道交通控制系统中如何实现μs级任务同步

轨道交通作为现代城市化进程中的重要支柱,承载着数以亿计的乘客出行需求,同时也是城市经济运行的命脉。无论是地铁、轻轨还是高速铁路,其控制系统的稳定性和可靠性直接关系到运营安全和效率。在这样一个高风险、高复杂度的环境中,任何微小的失误都可能导致灾难性后果。因此…...

嵌入式程序设计英语

实际要求:认识最基本的英文单词即可&#xff0c;(总计几百个) IDE 集成开发环境 fatal error fatal 致命的&#xff0c;error 错误&#xff0c;fatal error 致命的错误 main 主要的 include 包含 io input 输入&#xff0c;output 输出&#xff0c;input output …...

滚轮控制目标臂长度调整相机距离

通过鼠标滚轮来控制摄像机目标臂长度 , 调整相机距离 看图就行,不多说,照着连就完事了...

​‌FireCrawl‌爬虫工具​, Craw4ai

‌FireCrawl‌是一款开源的AI爬虫工具&#xff0c;专门用于Web数据提取&#xff0c;并将其转换为Markdown格式或其他结构化数据。FireCrawl特别适合处理使用JavaScript动态生成的网站&#xff0c;能够自动抓取网站及其所有可访问的子页面内容&#xff0c;并将其转换为适合大语言…...