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实…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...

遍历 Map 类型集合的方法汇总
1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?
在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

MODBUS TCP转CANopen 技术赋能高效协同作业
在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...

3-11单元格区域边界定位(End属性)学习笔记
返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...

处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的
修改bug思路: 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑:async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...

day36-多路IO复用
一、基本概念 (服务器多客户端模型) 定义:单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用:应用程序通常需要处理来自多条事件流中的事件,比如我现在用的电脑,需要同时处理键盘鼠标…...

uniapp 小程序 学习(一)
利用Hbuilder 创建项目 运行到内置浏览器看效果 下载微信小程序 安装到Hbuilder 下载地址 :开发者工具默认安装 设置服务端口号 在Hbuilder中设置微信小程序 配置 找到运行设置,将微信开发者工具放入到Hbuilder中, 打开后出现 如下 bug 解…...