当前位置: 首页 > news >正文

经理与员工工资关系-课后程序(JAVA基础案例教程-黑马程序员编著-第四章-课后作业)

【案例4-6】经理与员工工资案例(利用多态实现)

欢迎点赞关注收藏

【案例介绍】

  1. 案例描述

某公司的人员分为员工和经理两种,但经理也属于员工中的一种,公司的人员都有自己的姓名和地址,员工和经理都有自己的工号、工资、工龄等属性,但经理不同员工的是,经理有自己在公司对应的级别。假设每次给员工涨工资一次能涨10,经理能涨20%。本案例要求利用多态实现给员工和经理涨工资。

  1. 运行结果

【案例分析】

1)创建父类Person类,在Person类中定义nameaddress属性,并定义该类的构造方法。

2)创建抽象类Employee类并继承Person类,创建构造方法,在构造方法中调用父类的构造方法。在Employee类中定义员工的ID、工资wage、年龄age等属性;在类中定义涨工资的抽象方法add(),通过对职位的判断来给员工或经理涨工资。

3)创建子类Manager类并继承Employee类;创建构造方法,在构造方法中调用父类的构造方法;由于经理有两种身份,既是Employee又是Manager,所以Manager类继承Employee类,在Manager类中定义等级属性level,并给出levelgettersetter方法;实现Employee类的add()抽象方法。

4)创建测试类,对Manager进行实例化,传入参数,调用涨薪方法,传入级别level参数,根据级别level输出涨薪工资。

【案例实现】

Person.java

  1. public class Person {
  2.     private String name = "";
  3.     private String address = "";
  4.     //定义构造方法
  5.     public Person(String name, String address){
  6.         this.name = name;
  7.         this.address = address;     
  8.     }
  9. }

上述代码中,创建了一个父类Person类,在Person类中定义了nameaddress属性以及Person类的构造方法。

Employee.java

  1. public abstract class  Employee extends Person {
  2.     private String ID = "";
  3.     private double wage = 0;
  4.     private int age = 0;
  5.         public Employee(String name, String address, String ID, double
  6.  wage, int age){
  7.         super(name, address);
  8.         this.ID = ID;
  9.         this.wage = wage;
  10.     this.age = age;
  11.     }
  12.    //定义抽象方法
  13.     public abstract void add(String position);
  14.     //设置get/set方法
  15.     public double getWage() {
  16.         return wage;
  17.     }
  18.     public void setWage(double wage) {
  19.         this.wage = wage;
  20.     }
  21. }

上述代码中,创建了一个Employee类并继承了Person类,在Employee类中,定义了Employee类的构造方法,并在构造方法中调用了父类Person的构造方法;定义了员工的namewageage属性并提供了settergetter方法;定义了抽象方法add()

Manager.java

  1. public class Manager extends Employee{
  2.     private String level = "";
  3.     public Manager(String name, String address, String ID, double wage,
  4. int age, String level){
  5.         super(name, address, ID, wage, age);
  6.         this.level = level;
  7.     }
  8.     //实现抽象方法
  9.     public void add(){
  10.         double wage = super.getWage();
  11.         super.setWage(wage*1.1);
  12.     }
  13. public void add(String position){
  14.         double wage = super.getWage();
  15.         super.setWage(wage*1.2);
  16.     }
  17. public String getLevel() {
  18.         return level;
  19.     }
  20. public void setLevel(String level) {
  21.         this.level = level;
  22.     }
  23. }

上述代码中,创建了一个Manager类并继承了Employee类,在Manager类中,定义了Manager类的构造方法,并在构造方法中调用了父类Employee的构造方法;定义了员工的级别level属性并提供了settergetter方法;实现了Employee类的抽象方法add(),并对add()方法进行了重载

Test.java

  1. public class Test {
  2.     public static void main(String[] args) {
  3.         Manager normal = new Manager("wsl", "jit", "12", 1000, 2, "1");
  4.        Manager manager = new Manager("ctl", "jitt", "123", 10000, 10,
  5.         "0");
  6.         normal.add();
  7.         manager.add(manager.getLevel());
  8.         System.out.println("normal wage is:"+normal.getWage());
  9.         System.out.println("manager wage is:"+manager.getWage());
  10.     }
  11. }

上述代码中,创建了一个测试类Test类,在类中对Manager进行了实例化并传参。类中通过调用无参的add()方法来获取普通员工的涨薪,调用有参的add(manager.getLevel())方法来获取经理的涨薪。

http://www.lryc.cn/news/13475.html

相关文章:

  • Micropython ESP32配置与烧录版本
  • java面试题-并发关键字(Synchronized,volatile,final)
  • 【笔试强训】Day_02
  • DepGraph:适用任何结构的剪枝
  • 【结构体版】通讯录
  • Debezium系列之:基于debezium采集数据到kafka,再从kafka将数据流式传输到下游数据库
  • 【2023】华为OD机试真题Java-题目0217-上班之路
  • 基于spring生态的基础后端开发及渗透测试流程(二)
  • Python语言零基础入门教程(二十六)
  • 人们最想看到的是:你在坚持什么?
  • 300行代码手写spring初体验v1.0版本
  • 100天精通Python(数据分析篇)——第76天:Pandas数据类型转换函数pd.to_numeric(参数说明+实战案例)
  • 链表(超详细--包教包会)
  • 爬虫基本知识的认知(爬虫流程 HTTP构建)| 爬虫理论课,附赠三体案例
  • Ubuntu20.04如何安装虚拟机(并安装Android)
  • 【腾讯一面】我对我的Java基础不自信了
  • 前端都在聊什么 - 第 2 期
  • 每天一道大厂SQL题【Day11】微众银行真题实战(一)
  • Cosmos 基础教程(一) -- 不可不知的开发术语
  • JAVA JDK 常用工具类和工具方法
  • Spring Bean循环依赖
  • Hive 2.3.0 安装部署(mysql 8.0)
  • IPD术语表
  • 目标检测损失函数 yolos、DETR为例
  • linux系统编程2--网络编程socket
  • FPGA纯Verilog实现任意尺寸图像缩放,串口指令控制切换,贴近真实项目,提供工程源码和技术支持
  • 华为OD机试题 - 最长合法表达式(JavaScript)| 代码+思路+重要知识点
  • L1-005 考试座位号
  • Obsidian + remotely save + 坚果云:实现电脑端和手机端的同步
  • 对比学习MoCo损失函数infoNCE理解(附代码)