day03_作业
一、简答题
继承的格式与好处
格式:class A extends B
好处:1.可以实现代码的复用,将共性的代码向上抽取,抽取到父类中。需要使用这些属性和行为的类,通过继承即可使用。2.当需要添加新的功能时,可以通过扩展现有的类来实现,而不必修改现有的代码。这种通过继承实现的扩展方式称为“开放-封闭”原则,即对扩展开放,对修改封闭。
什么是方法重写
当父类的行为无法满足子类的需求,子类就需要重写父类的方法,来对现用的父类某一行为进行修改或者扩展。
抽象类和接口的区别
设计目的不同:接口用于不同类实现相同行为的规范和约束,抽象类还存在共性抽取的成员方法。用于具有相似行为的类的继承和代码复用。
继承限制:java只支持单继承,但可以多实现。一个类只能直接继承一个抽象类,但可以直接实现多个接口。
二、代码题
/*分析以下需求并完成代码请使用继承思想,实现程序员类(Coder)和项目经理类(Manager)思路分析共同属性有:工号、姓名、年龄项目经理类有一个特有属性:奖金(bonus)公共方法有:工作work()测试类中创建程序员、项目经理对象,分别调用work方法
*//*** @author windStop* @version 1.0* @description 共同父类-打工人* @date 2024年07月18日20:53:51*/
public class Worker {private int id;//工号private String name;//姓名private int age;//年龄public void work(){System.out.println("id为:" + id + "年龄为:" + age + "的" + name + "正在工作");}public Worker() {}public Worker(int id, String name, int age) {this.id = id;this.name = name;this.age = age;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}
}/*** @author windStop* @version 1.0* @description 程序员类* @date 2024年07月18日20:53:16*/
public class Coder extends Worker{public Coder() {}public Coder(int id, String name, int age) {super(id, name, age);}
}/*** @author windStop* @version 1.0* @description 部门经理类* @date 2024年07月18日20:53:32*/
public class Manager extends Worker{private double bonus;//奖金public Manager() {}public Manager(int id, String name, int age, double bonus) {super(id, name, age);this.bonus = bonus;}public double getBonus() {return bonus;}public void setBonus(double bonus) {this.bonus = bonus;}
}/*** @author windStop* @version 1.0* @description 继承思想的测试类* @date 2024年07月18日20:52:52*/
public class Test1 {public static void main(String[] args) {Coder coder = new Coder(2001,"小王",18);Manager manager = new Manager(9001,"老李",41,9000.99);coder.work();manager.work();System.out.println(manager.getBonus());}
}
/*分析以下需求并完成代码请采用面向对象的思想,实现木门和报警门的案例,并在测试类中测试思路分析设计抽象类Door,成员变量包含width、height、brand,抽象方法包含open开门、close关门设计接口Alarm, 其中包含抽象方法alarm(报警方法)设计子类WoodDoor,继承Door,重写open开门、close关门方法设计子类ElectricAlarmDoor,继承门Door,重写open、close方法,同时还具有报警功能,需实现Alarm报警接口,重写其alarm报警方法调用方法查看结果
*//*** @author windStop* @version 1.0* @description 警报器接口* 报警器接口的作用是定义报警器应具备的行为和功能,从而提供一个标准的规范。* 接口定义了报警器对象应该具备的方法签名* 比如触发报警、停止报警、设置报警参数等功能。* @date 2024年07月18日21:08:15*/
public interface Alarm {//报警方法void alarm();
}/*** @author windStop* @version 1.0* @description 父类:门 ---抽象类* @date 2024年07月18日21:04:30*/public abstract class Door {private String width;//宽private String height;//宽private String brand;//品牌public Door() {}public Door(String width, String height, String brand) {this.width = width;this.height = height;this.brand = brand;}//开门public abstract void open();//关门public abstract void close();/*** 获取* @return width*/public String getWidth() {return width;}/*** 设置* @param width*/public void setWidth(String width) {this.width = width;}/*** 获取* @return height*/public String getHeight() {return height;}/*** 设置* @param height*/public void setHeight(String height) {this.height = height;}/*** 获取* @return brand*/public String getBrand() {return brand;}/*** 设置* @param brand*/public void setBrand(String brand) {this.brand = brand;}public String toString() {return "Door{width = " + width + ", height = " + height + ", brand = " + brand + "}";}
}/*** @author windStop* @version 1.0* @description 报警门* @date 2024年07月18日21:28:05*/
public class ElectricAlarmDoor extends Door implements Alarm{public ElectricAlarmDoor() {}public ElectricAlarmDoor(String width, String height, String brand) {super(width, height, brand);}@Overridepublic void alarm() {System.out.println("触发报警、停止报警、设置报警参数设置已完成了");System.out.println("报警功能以生成成功");}@Overridepublic void open() {System.out.println(getBrand() + "的木门 —> 打开了");}@Overridepublic void close() {System.out.println(getBrand() + "的木门 —> 关闭了");}
}/*** @author windStop* @version 1.0* @description 子类:木门* @date 2024年07月18日21:25:52*/
public class WoodDoor extends Door{public WoodDoor() {}public WoodDoor(String width, String height, String brand) {super(width, height, brand);}@Overridepublic void open() {System.out.println(getBrand() + "的木门 —> 打开了");}@Overridepublic void close() {System.out.println(getBrand() + "的木门 —> 关闭了");}
}/*** @author windStop* @version 1.0* @description 测试类* @date 2024年07月18日21:29:51*/
public class Test {public static void main(String[] args) {WoodDoor woodDoor = new WoodDoor("1500","100","新时代");ElectricAlarmDoor electricAlarmDoor = new ElectricAlarmDoor("1800","200","啄木鸟");woodDoor.close();woodDoor.open();System.out.println(woodDoor.getHeight());electricAlarmDoor.open();electricAlarmDoor.alarm();}
}
/*
我们计划为一所体育学校设计一套系统,需要记录以下人员的信息:教练员:属性:员工编号、姓名、性别、年龄行为:吃饭(吃工作餐)运动员:属性:学员编号、姓名、性别、年龄、所在班级行为:吃饭(吃营养餐)
请根据需求,设计、并编码实现:父类“人员类”,子类“教练员类”、子类“运动员类”,并包含共有的属性和行为的定义,由于运动员和教练员的吃饭的内容不同,所以需要设计为“抽象方法”。
*//*** @author windStop* @version 1.0* @description 运动员* @date 2024年07月18日21:43:20*/
public class Athletes extends Person{private String ClassName;//所在班级public Athletes() {}public Athletes(int id, String name, char sex, int age, String className) {super(id, name, sex, age);ClassName = className;}public String getClassName() {return ClassName;}public void setClassName(String className) {ClassName = className;}@Overridepublic void eat() {System.out.println(getName() + "正在吃营养餐");}
}/*** @author windStop* @version 1.0* @description 教练员的javabean* @date 2024年07月18日21:36:24*/
public class Coach extends Person{public Coach() {}public Coach(int id, String name, char sex, int age) {super(id, name, sex, age);}@Overridepublic void eat() {System.out.println(getName() + "正在吃工作餐");}
}/*** @author windStop* @version 1.0* @description 抽取的父类 --> 人* @date 2024年07月18日21:41:29*/
public abstract class Person {private int id;//员工编号private String name;//姓名private char sex;//性别private int age;//年龄public abstract void eat();public Person() {}public Person(int id, String name, char sex, int age) {this.id = id;this.name = name;this.sex = sex;this.age = age;}/*** 获取* @return id*/public int getId() {return id;}/*** 设置* @param id*/public void setId(int id) {this.id = id;}/*** 获取* @return name*/public String getName() {return name;}/*** 设置* @param name*/public void setName(String name) {this.name = name;}/*** 获取* @return sex*/public char getSex() {return sex;}/*** 设置* @param sex*/public void setSex(char sex) {this.sex = sex;}/*** 获取* @return age*/public int getAge() {return age;}/*** 设置* @param age*/public void setAge(int age) {this.age = age;}public String toString() {return "Coach{id = " + id + ", name = " + name + ", sex = " + sex + ", age = " + age + "}";}
}/*** @author windStop* @version 1.0* @description 测试类* @date 2024年07月18日21:45:33*/
public class Test {public static void main(String[] args) {Coach coach = new Coach(8848,"张三",'男',48);Athletes athletes = new Athletes(9999,"小红",'女',18,"体操一班");coach.eat();System.out.println(coach);athletes.eat();System.out.println(athletes );}
}相关文章:
day03_作业
一、简答题 继承的格式与好处 格式:class A extends B 好处:1.可以实现代码的复用,将共性的代码向上抽取,抽取到父类中。需要使用这些属性和行为的类,通过继承即可使用。2.当需要添加新的功能时,可以通过…...
pyinstaller程序打包,资源嵌入exe
参考:https://blog.csdn.net/qq_48979387/article/details/132359366 一、参数说明 -F 最终打包为一个可执行文件。-w 取消Windows显示窗口-add-data ‘dll;dll’,将当前目录dll下的文件打包到可执行文件的dll中,最终会在解压文件的dll文件…...
如何使用 OCR 和 GPT-4o mini 轻松提取收据信息
利用 OCR 和强大的 GPT-4o 迷你模型对收据进行信息提取 利用 OCR 和强大的 GPT-4o 迷你模型对收据进行信息提取 欢迎来到雲闪世界。,我将向您展示如何从收据中提取信息,并提供收据的简单图像。首先,我们将利用 OCR 从收据中提取信息。然后&a…...
go 事务
事务处理 首先启动事务时一定要做错误判断建议在启动事务之后马上写defer方法在defer方法内对err进行判断,如果全局中有err!nil就回滚全局中err都为nil则提交事务在提交事务之后我们可以定义一个钩子函数afterCommit,来统一处理事务提交后的逻辑。 示例…...
C,数据结构,多进程线程,网络编程面试题总结
目录 1.指针数组和数组指针 2.结构体字节对齐 3.Tcp和Udp的区别 4.同步通信和异步通信的区别 5.多线程理解 6.大小端验证 7.互斥锁相关问题 8.共享内存特点 9.c中的指针 10.Gcc编译 11.Socket的了解 12.Ip地址和子网掩码如何决定网卡所在的网段 13.数据结构中栈与…...
【Cesium学习】着色器详解【待进一步总结】
在Cesium中,drawCommand 和 CustomShader 是与渲染管线和自定义渲染效果相关的两个重要概念,但它们各自有不同的作用和应用场景。下面我将分别详解这两个概念。 drawCommand drawCommand 是 Cesium 渲染引擎内部使用的一个概念,它代表了单个…...
【3】静态路由(Static routing)
目录 一、有类路由和无类路由 二、路由的基本知识 三、配置 路由的组成: 四、特殊——默认路由 五、优点和缺点 六、实验 数据通信是双向的,路由器不同的接口属于不同的广播域和冲突域 一、有类路由和无类路由 有类路由:有ABC类别之…...
阿里声音项目Qwen2-Audio的部署安装,在服务器Ubuntu22.04系统——点动科技
阿里声音项目Qwen2-Audio的部署安装,在服务器Ubuntu22.04系统——点动科技 一、ubuntu22.04基本环境配置1.1 更换清华Ubuntu镜像源1.2 更新包列表:2. 安装英伟达显卡驱动2.1 使用wget在命令行下载驱动包2.2 更新软件列表和安装必要软件、依赖2.2 卸载原有…...
RAG(检索增强生成)
RAG (Retrieval-Augmented Generation) 是一种自然语言处理的模型架构,主要用于生成性任务,如文本生成、对话系统等。RAG 将检索和生成两个任务结合起来,以提高生成结果的质量和相关性。 RAG 模型的主要思想是通过检索阶段获取相关的上下文信…...
AcWing848有向图的拓扑排序
拓扑排序的流程: 插入(a,b),表示a->b的关系,调用add(a,b),每次吧b的入度1,d[b]; 然后调用topsort,返回1表示存在拓扑序列,返回0表示不存在拓扑序列。判断是否存在拓扑…...
猫咪掉毛很严重,家中猫毛该如何清理?快来看资深铲屎官经验分享
想必铲屎官们都见识过换毛季的威力。拿我家举例,养了一只长毛,一只短毛,打扫完不用半天,家里就能重新出现不少猫毛。严重的时候,每天都要扫地机器人扫三次,拖一次。 最近两天外出,回来给它们梳…...
Midjourney进阶-反推与优化提示词(案例实操)
Midjourney中提示词是关键,掌握提示词的技巧直接决定了生成作品的质量。 当你看到一张不错的图片,想要让Midjourney生成类似的图片,却不知道如何描述画面撰写提示词,这时候Midjourney的/describe指令,正是帮助你推…...
大公报发表欧科云链署名文章:发行港元稳定币,建Web3.0新生态
欧科云链研究院资深研究员蒋照生近日与香港科技大学副校长兼香港Web3.0协会首席科学顾问汪扬、零壹智库创始人兼CEO柏亮,在大公报发布联合署名文章 ——《Web3.0洞察 / 发行港元稳定币,建Web3.0新生态》,引发市场广泛讨论。 文章就香港稳定币…...
Mybatis的一些常用知识点(面试)
什么是MyBatis? Mybatis 是⼀个半 ORM(对象关系映射)框架,它内部封装了 JDBC。 它让开发者在开发时只需要关注 SQL 语句本身,不需要花费精⼒去处理加载驱动、创建连接等繁杂的过程 缺点: SQL语句的编写⼯作量较⼤ SQ…...
stm32—ADC
1. 什么是ADC 生活中我们经常会用到ADC这种器件,比如说,当我们在使用手机进行语音通信时,ADC器件会将我们的声信号转换为电信号 (模拟信号 ---> 数字信号) 模拟信号: 模拟信号是指用连续变化的物理量表示的信息,其信…...
【微信小程序】吐槽生态之云开发服务端能力不足
回想起来,笔者开发小程序的经历也有4年多了,以前因为技术积累接触不到比较深层次的东西,也不理解软件生态这个概念,现在开发小程序的过程中,越来越觉得很多生态微信的进步空间很大。 问题引入 比如说,在迭…...
AnimateDiff论文解读
GitHub - Kosinkadink/ComfyUI-AnimateDiff-Evolved: Improved AnimateDiff for ComfyUI and Advanced Sampling Support 视频编码 定义: 首先,将视频数据转换为一系列的潜变量代码(latent codes)。这是通过一个预训练的自动编码器(auto-encoder)来完成的。操作: …...
C/C++控制台贪吃蛇游戏的实现
🚀欢迎互三👉:程序猿方梓燚 💎💎 🚀关注博主,后期持续更新系列文章 🚀如果有错误感谢请大家批评指出,及时修改 🚀感谢大家点赞👍收藏⭐评论✍ 一、…...
Linux 升级安装 Weblogic-补丁!
版本: RedHat 6.5 Weblogic 10.3.6.0 ----------------------------------------------------------------- 1.查看当前 weblogic 补丁版本 cd /weblogic/utils/bsu/ ./bsu.sh -prod_dir/weblogic/wlserver_10.3/ -statusapplied -verbose -view 2.卸载旧补丁…...
苍鹰来啦!快来看呀!NGO-BiTCN-BiGRU-Attention北方苍鹰算法优化多重双向深度学习回归预测
苍鹰来啦!快来看呀!NGO-BiTCN-BiGRU-Attention北方苍鹰算法优化多重双向深度学习回归预测 目录 苍鹰来啦!快来看呀!NGO-BiTCN-BiGRU-Attention北方苍鹰算法优化多重双向深度学习回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实…...
除了Omnipeek,你的8812BU网卡还能怎么玩?Win10下的另类WiFi抓包与网络诊断实战
解锁Realtek 8812BU网卡的隐藏潜能:Windows 10下的WiFi抓包与网络诊断全攻略 当你手握一块Realtek 8812BU无线网卡时,可能只把它当作普通的网络连接工具。但实际上,这款硬件在Windows 10环境下可以变身为强大的网络诊断利器。本文将带你探索…...
串口通讯参数设置全解析:从波特率到流控制的完整配置流程
串口通讯参数设置全解析:从波特率到流控制的完整配置流程 在嵌入式系统和硬件调试领域,串口通讯就像设备间的"普通话",而参数配置则是确保双方能顺畅交流的语法规则。想象一下,当你需要让树莓派与传感器"对话&quo…...
工业现场直通车:用C#和雷赛DMC3000库,从零搭建一个真实的运动控制上位机
工业现场直通车:用C#和雷赛DMC3000库构建高可靠运动控制上位机 在工业自动化领域,运动控制系统的稳定性和实时性直接决定了生产效率和产品质量。许多开发者从教学Demo过渡到实际工业应用时,常常面临理论与实践的断层——教材中的理想化代码无…...
ReefwingLSM9DS1库:面向nRF52840的九轴IMU同步驱动
1. ReefwingLSM9DS1库概述:面向Arduino Nano 33 BLE的LSM9DS1九轴IMU驱动实现ReefwingLSM9DS1是一个专为Arduino Nano 33 BLE硬件平台优化的C类库,用于驱动STMicroelectronics出品的LSM9DS1高精度九轴惯性测量单元(Inertial Measurement Unit…...
【MobaXterm进阶】SSH连接稳定性优化:Keepalive与超时设置详解
1. 为什么SSH连接会频繁断开? 很多朋友在用MobaXterm远程连接服务器时都遇到过这样的困扰:明明连接得好好的,过一会儿就莫名其妙断开了。特别是当你正在执行一个耗时较长的任务时,突然中断简直让人抓狂。这种情况在家庭版用户中尤…...
探索光伏 - 电池充电模型:稳定直流输出电压的技术之旅
光伏-电池充电模型,可以很好的稳定直流输出电压 采用最大功率跟踪MPPT算法,通过boost电路输出电压,电池侧采用电压电流PI双闭环控制,通过双向电路给电池充放电 直流侧参考电压为48v在光伏能源领域,确保稳定的直流输出电…...
30天重置一次:JetBrains IDE评估期管理工具使用指南
30天重置一次:JetBrains IDE评估期管理工具使用指南 【免费下载链接】ide-eval-resetter 项目地址: https://gitcode.com/gh_mirrors/id/ide-eval-resetter 在软件开发过程中,JetBrains系列IDE(如IntelliJ IDEA、PyCharm、WebStorm等…...
AI Agent不是你以为的那样
系列:《AI Agent 从原理到实战 —— 解密 Claude Code 背后的工程智慧》 第1篇引言 你大概有过这样的体验:打开 ChatGPT,说一句"帮我写封邮件,拒绝周五的会议邀请,语气委婉一点",几秒钟后一封措辞…...
Redis可视化管理解决方案:AnotherRedisDesktopManager实战指南
Redis可视化管理解决方案:AnotherRedisDesktopManager实战指南 【免费下载链接】AnotherRedisDesktopManager 🚀🚀🚀A faster, better and more stable Redis desktop manager [GUI client], compatible with Linux, Windows, Mac…...
行业研究报告怎么选:看清咨询公司的“真本事”
一、为什么大家都在找“靠谱的行业研究报告”这几年,不论是创业公司做战略决策,还是大型企业布局新业务,几乎都有一个共识——决策要有数据、有研究、有趋势支撑。于是,“行业研究报告”成了商业决策的必备工具,但市场…...
