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实…...
ONNXRuntime GPU推理想用BFloat16加速?手把手教你搞定PyTorch + CUDA环境配置与避坑
ONNXRuntime GPU推理想用BFloat16加速?手把手教你搞定PyTorch CUDA环境配置与避坑 在深度学习模型部署领域,BFloat16数据类型正逐渐成为提升推理性能的新宠。这种16位浮点格式保留了与32位浮点相同的指数位,在保持数值范围的同时减少了内存占…...
CCPD车牌数据集预处理避坑指南:透视变换原理详解与OpenCV实战
CCPD车牌数据集预处理避坑指南:透视变换原理详解与OpenCV实战 车牌识别系统中,数据预处理的质量直接影响模型性能。CCPD作为目前最全面的中文车牌数据集,其四点标注特性为透视变换提供了基础,但也暗藏诸多陷阱。本文将手把手带您穿…...
GD32F103C8T6烧录方式全解析:串口ISP、ST-Link Utility、Keil在线,哪种最适合你?
GD32F103C8T6烧录方案深度评测:从原型开发到量产部署的全场景指南 在嵌入式开发领域,选择正确的程序烧录方式往往决定着开发效率和生产成本。作为STM32F103的国产替代方案,GD32F103C8T6凭借其出色的性价比赢得了广泛关注。但许多开发者在迁移…...
【人生底稿 28】新疆出差终章:几番波折终汇报,尽兴踏归津门路
三日游玩尽数落幕,忙碌工作正式回归。轻松的闲暇时光悄然收尾,紧绷的工作状态再次上线。整趟新疆之行,在起伏辗转中迎来最终收尾。一、深夜复盘材料,彻夜待汇报游玩结束回到酒店,我没有松懈休息,静下心重新…...
GARbro:跨平台视觉小说游戏资源解析与提取工具
GARbro:跨平台视觉小说游戏资源解析与提取工具 【免费下载链接】GARbro Visual Novels resource browser 项目地址: https://gitcode.com/gh_mirrors/ga/GARbro GARbro是一款专门用于解析和提取视觉小说游戏资源文件的跨平台开源工具,支持数百种游…...
FPGA高速ADC数据采集实战——基于AD9253 LVDS接口与ISERDESE2设计
1. AD9253高速ADC核心特性解析 AD9253这颗14位125MSPS四通道ADC芯片,在通信和医疗成像领域堪称经典。我经手过的多个雷达项目中,它的信噪比表现总能带来惊喜——75.3dBFS的实测数据比手册标称值还要稳定。但真正让工程师们又爱又恨的,是它那个…...
ncmdumpGUI:3步解决网易云音乐ncm格式播放限制的终极方案
ncmdumpGUI:3步解决网易云音乐ncm格式播放限制的终极方案 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否曾经在网易云音乐下载了心爱的歌曲…...
Qdrant客户端库实战:从向量数据库连接到生产级应用开发
1. 项目概述:从向量数据库到应用落地的桥梁如果你最近在折腾大模型应用,或者想给自己的产品加上一个“智能大脑”,那你大概率绕不开一个词:向量数据库。简单来说,它就像一个能理解“意思”的超级搜索引擎,不…...
怎么判断一家工厂还在不在正常生产?6 类活跃度信号,从纸面到现场
跑工厂的销售员都遇到过这种事:手机里存着一份名单,导航开两小时,到门口才发现卷帘门焊死、车间长草、保安说"厂子去年就搬了"。 问题出在哪?大多数人判断"这家工厂在不在",靠的是工商登记——执照…...
Python自动化股票分析工具:从数据采集到可视化报告全流程实战
1. 项目概述:一个面向个人投资者的自动化股票分析工具如果你和我一样,是个对A股市场有点兴趣,但又没时间天天盯盘的上班族,那你肯定也经历过这种纠结:早上开盘前想看看心仪的几只股票有没有什么异动,结果一…...
