day03_作业

2024-08-21 01:44
文章标签 作业 day03

本文主要是介绍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_作业的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1091763

相关文章

作业提交过程之HDFSMapReduce

作业提交全过程详解 (1)作业提交 第1步:Client调用job.waitForCompletion方法,向整个集群提交MapReduce作业。 第2步:Client向RM申请一个作业id。 第3步:RM给Client返回该job资源的提交路径和作业id。 第4步:Client提交jar包、切片信息和配置文件到指定的资源提交路径。 第5步:Client提交完资源后,向RM申请运行MrAp

Java高级Day38-网络编程作业

112.网络编程作业 //1.使用字符流的方式,编写一个客户端程序和服务器端程序//2.客户端发送"name",服务器端接收到后,返回"我是nova"//3.客户端发送"hobby",服务器端接收到后,返回"编写java程序"//4.不是这两个问题,回复"你说啥呢"​​===============//客户端//===============public class SocketT

0906作业+思维导图梳理

一、作业: 1、创捷一个类似于qq登录的界面 1)源代码 #include "widget.h"#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget){ui->setupUi(this);//QPushbutton:登录、退出this->join = new QP

网络编程day03(网络体系结构、调试命令、TCP/IP对比)

目录 1》网络的体系结构 1> OSI模型  2> TCP/IP模型 3> 常见网络协议 4> DNS域名解析协议 2》 网络调试命令 1> ping:测试网络连通性(ICMP) 2> netstat   3》Dos (拒绝式服务)攻击?  4》 TCP/IP协议对比 1》网络的体系结构 网络采用分而治之的方法设计,将网络的功能划分为不同的模块,以分层的形式有机组

java设计模式day03--(结构型模式:代理模式、适配器模式、装饰者模式、桥接模式、外观模式、组合模式、享元模式)

5,结构型模式 结构型模式描述如何将类或对象按某种布局组成更大的结构。它分为类结构型模式和对象结构型模式,前者采用继承机制来组织接口和类,后者釆用组合或聚合来组合对象。 由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象结构型模式比类结构型模式具有更大的灵活性。 结构型模式分为以下 7 种: 代理模式 适配器模式 装饰者模式 桥接模式 外观模式 组合模式

2024.9.6 作业

1> 手写unique_ptr指针指针 #include <iostream>using namespace std;template <typename T>class my_unique_ptr{public:explicit my_unique_ptr(T *p = nullptr) noexcept // 构造函数{ptr = p;}~my_unique_ptr() noexcep

9月6号作业

1:.h文件 #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QWidget> #include<QIcon> //图标类 #include<QLabel> //标签类 #include<QMovie> //动图类 #include<QLineEdit> //行编辑器类

Flink实例(六十九): flink 作业提交(四)总结

独立集群提交 # 启动集群bin/start-cluster.sh# 提交job./bin/flink run ./examples/batch/WordCount.jar --input hdfs:/user/yuan/input/wc.count --output hdfs:/user/yuan/swwwttt yarn session # 启动集群./bin/

【#第三期实战营闯关作业 ## 茴香豆:企业级知识库问答工具】

今天学习了《 茴香豆:企业级知识库问答工具》这一课,对大模型的应用有了更深得认识。以下是记录本课实操过程及截图: 搭建茴香豆虚拟环境: 输入以下命令 ``studio-conda -o internlm-base -t huixiangdou 成功安装虚拟环境截图 安装茴香豆 cd /root 克隆代码仓库 git clone https://github.com/internlm/h

代码随想录算法训练营Day03 | 链表理论基础、203.移除链表元素 、707.设计链表、206.反转链表

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 链表理论基础203.移除链表元素思路与重点 707.设计链表思路与重点 206.反转链表思路与重点 链表理论基础 C/C++的定义链表节点方式: // 单链表struct ListNode {int val; // 节点上存储的元素ListNode *next; // 指向下一个节点的指