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实…...
1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...
C++ 基础特性深度解析
目录 引言 一、命名空间(namespace) C 中的命名空间 与 C 语言的对比 二、缺省参数 C 中的缺省参数 与 C 语言的对比 三、引用(reference) C 中的引用 与 C 语言的对比 四、inline(内联函数…...
leetcodeSQL解题:3564. 季节性销售分析
leetcodeSQL解题:3564. 季节性销售分析 题目: 表:sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...
USB Over IP专用硬件的5个特点
USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...
安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖
在Vuzix M400 AR智能眼镜的助力下,卢森堡罗伯特舒曼医院(the Robert Schuman Hospitals, HRS)凭借在无菌制剂生产流程中引入增强现实技术(AR)创新项目,荣获了2024年6月7日由卢森堡医院药剂师协会࿰…...
作为测试我们应该关注redis哪些方面
1、功能测试 数据结构操作:验证字符串、列表、哈希、集合和有序的基本操作是否正确 持久化:测试aof和aof持久化机制,确保数据在开启后正确恢复。 事务:检查事务的原子性和回滚机制。 发布订阅:确保消息正确传递。 2、性…...
系统掌握PyTorch:图解张量、Autograd、DataLoader、nn.Module与实战模型
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文通过代码驱动的方式,系统讲解PyTorch核心概念和实战技巧,涵盖张量操作、自动微分、数据加载、模型构建和训练全流程&#…...
jdbc查询mysql数据库时,出现id顺序错误的情况
我在repository中的查询语句如下所示,即传入一个List<intager>的数据,返回这些id的问题列表。但是由于数据库查询时ID列表的顺序与预期不一致,会导致返回的id是从小到大排列的,但我不希望这样。 Query("SELECT NEW com…...
游戏开发中常见的战斗数值英文缩写对照表
游戏开发中常见的战斗数值英文缩写对照表 基础属性(Basic Attributes) 缩写英文全称中文释义常见使用场景HPHit Points / Health Points生命值角色生存状态MPMana Points / Magic Points魔法值技能释放资源SPStamina Points体力值动作消耗资源APAction…...
表单设计器拖拽对象时添加属性
背景:因为项目需要。自写设计器。遇到的坑在此记录 使用的拖拽组件时vuedraggable。下面放上局部示例截图。 坑1。draggable标签在拖拽时可以获取到被拖拽的对象属性定义 要使用 :clone, 而不是clone。我想应该是因为draggable标签比较特。另外在使用**:clone时要将…...
