题目:

某公司的雇员分为以下若干类:

  1. Employee:这是所有员工总的父类,属性:员工的姓名,员工的生日月份。
    方法:getSalary(int month) 根据参数月份来确定工资,如果该月员工过生日,则公司会额外奖励100元。
  2. SalariedEmployee:Employee的子类,拿固定工资的员工。属性:月薪。
  3. HourlyEmployee:Employee的子类,按小时拿工资的员工,每月工作超出160小时的部分按照1.5倍工资发放。属性:每小时的工资、每月工作的小时数。
  4. SalesEmployee:Employee的子类,销售人员,工资由月销售额和提成率决定。属性:月销售额、提成率。
  5. BasedPlusSalesEmployee:SalesEmployee的子类,有固定底薪的销售人员,
    工资由底薪加上销售提成部分。
    属性:底薪。

每个不同的员工类的重写父类的计算工资的方法 ,获取到正确的工资。

分析:
Employee为父类,所有员工类都继承该类,重写计算工资的方法getSalary(int month)。

更新:
父类Employee中判断生日月增加工资的方法可以在子类中重写时调用,利用super。增加代码复用性。

所有员工总的父类,Employee:

public class Employee {private String name; // 员工姓名private int month; // 员工生日月public String getName() {return name;}public void setName(String name) {this.name = name;}public int getMonth() {return month;}public void setMonth(int month) {this.month = month;}// 获取工资方法public double getSalary(int month) {Date date = new Date();int m = date.getMonth() + 1;if (month == m) {return 100;} else {return 0;}}
}

拿固定工资的员工类,SalariedEmployee:

public class SalariedEmployee extends Employee {private double monSalary; // 月薪public double getMonSalary() {return monSalary;}public void setMonSalary(double monSalary) {this.monSalary = monSalary;}// 重写获取工资方法,public double getSalary(int month) {return monSalary + super.getSalary(month);}
}

按小时拿工资的员工,每月工作超出160小时的部分按照1.5倍工资发放。 HourlyEmployee:

public class HourlyEmployee extends Employee {private double hourMoney; // 每小时的工资、private double hours; // 每月工作的小时数public double getHourMoney() {return hourMoney;}public void setHourMoney(double hourMoney) {this.hourMoney = hourMoney;}public double getHours() {return hours;}public void setHours(double hours) {this.hours = hours;}// 重写计算工资的方法public double getSalary(int month) {double salary = 0;if (hours > 160) {salary = (160 + (hours - 160) * 1.5) * hourMoney;} else {salary = hours * hourMoney;}return salary + super.getSalary(month);}
}

销售人员,工资由月销售额和提成率决定。SalesEmployee:

public class SalesEmployee extends Employee {private double saleCount; // 月销售额、private double royaltyRate; // 提成率public double getSaleCount() {return saleCount;}public void setSaleCount(double saleCount) {this.saleCount = saleCount;}public double getRoyaltyRate() {return royaltyRate;}public void setRoyaltyRate(double royaltyRate) {this.royaltyRate = royaltyRate;}// 计算工资方法重载public double getSalary(int month) {return saleCount * royaltyRate + super.getSalary(month);}
}

有固定底薪的销售人员,工资由底薪加上销售提成部分。BasedPlusSalesEmployee:

public class BasedPlusSalesEmployee extends SalesEmployee {private double baseSalary; // 底薪public double getBaseSalary() {return baseSalary;}public void setBaseSalary(double baseSalary) {this.baseSalary = baseSalary;}// 计算工资方法重载public double getSalary(int month) {return baseSalary + super.getSalary(month);}
}

测试类:

public class Test {public static void main(String[] args) {System.out.println("==== SalariedEmployee 拿固定工资的员工 ====");SalariedEmployee e1 = new SalariedEmployee();e1.setName("曹操"); // 设置员工姓名e1.setMonth(8); // 设置生日是8月e1.setMonSalary(8999); // 设置工资是8999System.out.println(e1.getName() + "的生日为:" + e1.getMonth() + " 月");System.out.println("平时月工资为:" + e1.getSalary(7));System.out.println("生日月工资为:" + e1.getSalary(8));System.out.println("\n==== HourlyEmployee 按小时拿工资的员工 ====");HourlyEmployee e2 = new HourlyEmployee();e2.setName("孙权"); // 设置员工姓名e2.setMonth(8); // 设置生日是8月e2.setHours(161); // 设置工作事件e2.setHourMoney(10); // 设置每小时工资System.out.println(e2.getName() + "的生日为:" + e2.getMonth() + " 月");System.out.println("平时月工资为:" + e2.getSalary(7));System.out.println("生日月工资为:" + e2.getSalary(8));System.out.println("工作时间为:" + e2.getHours() + "小时\t每小时工资为:" + e2.getHourMoney());System.out.println("\n===SalesEmployee销售人员,工资由月销售额和提成率决定====");SalesEmployee e3 = new SalesEmployee();e3.setName("赵云"); // 设置员工姓名e3.setMonth(8); // 设置生日是8月e3.setSaleCount(58000); // 设置月销售额e3.setRoyaltyRate(0.19);// 设置提成率System.out.println(e3.getName() + "的生日为:" + e3.getMonth() + " 月");System.out.println("平时月工资为:" + e3.getSalary(7));System.out.println("生日月工资为:" + e3.getSalary(8));System.out.println("销售额:" + e3.getSaleCount() + "\t提成率:" + e3.getRoyaltyRate());System.out.println("\n===BasedPlusSalesEmployee 有固定底薪的销售人员====");BasedPlusSalesEmployee e4 = new BasedPlusSalesEmployee();e4.setName("张飞"); // 设置员工姓名e4.setMonth(8); // 设置生日是8月e4.setBaseSalary(4000); // 设置底薪e4.setSaleCount(38000); // 设置月销售额e4.setRoyaltyRate(0.15);// 设置提成率System.out.println(e4.getName() + "的生日为:" + e4.getMonth() + " 月");System.out.println("平时月工资为:" + e4.getSalary(7));System.out.println("生日月工资为:" + e4.getSalary(8));System.out.println("工资 = " + e4.getBaseSalary() + " + "+ e4.getSaleCount() + " * " + e4.getRoyaltyRate());}
}

运行结果:

每天进步一点点!

Java基础--封装--继承 某公司的雇员分为以下若干类:Employee:这是所有员工总的父类。 SalariedEmployee:Employee的子类相关推荐

  1. # 封装,抽象类,继承,重写java编程题 问题描述 ``` 某公司的雇员分为以下若干类: Employee:这是所有员工总的父类,属性:员工的姓名,员工的生日月份。 方法:getSalary(int

    封装,抽象类,继承,重写java编程题 问题描述 某公司的雇员分为以下若干类: Employee:这是所有员工总的父类,属性:员工的姓名,员工的生日月份. 方法:getSalary(int month ...

  2. java编程---某公司的雇员分为以下若干类:Employee:这是所有员工总的父类,属性:员工的姓名,员工的生日月份。方法:getSalary(intmonth)根据参数月份来确定工资。

    题目: 某公司的雇员分为以下若干类: Employee:这是所有员工总的父类, 属性: 员工的姓名,员工的生日月份. 方法:getSalary(intmonth) 根据参数月份来确定工资,如果该月员工 ...

  3. 某公司的雇员分为以下若干类 7-12

    题目:某公司的雇员分为以下若干类写一个程序,把若干各种类型的员工放在一个Employee数组里,写一个方法,打印出某月每个员工的工资数额. 注意:要求把每个类都封装,不允许非私有化属性. Employ ...

  4. 某公司的雇员分为以下若干类: Employee:这是所有员工总的父类, 属性: 员工的姓名,员工的生日月份。 方法:getSalary(

    代码 /*某公司的雇员分为以下若干类:Employee:这是所有员工总的父类,属性:员工的姓名,员工的生日月份.方法:getSalary(intmonth)根据参数月份来确定工资,如果该月员工过生日, ...

  5. Cola公司的雇员分为以下若干类:(知识点:多态) 4.1 ColaEmployee :这是所有员工总的父类,属性:员工的姓名,员工 的生日月份。方法:getSalary(int month) 根据

    Cola公司的雇员分为以下若干类:(知识点:多态) 4.1 ColaEmployee :这是所有员工总的父类,属性:员工的姓名,员工 的生日月份.方法:getSalary(int month) 根据参 ...

  6. 某公司的雇员分为以下若干类:

    某公司的雇员分为以下若干类: Employee: ​ 这是所有员工总的父类, ​ 属性:员工的姓名,员工的生日月份. ​ 方法:getSalary(int month) 根据参数月份来确定工资,如果该 ...

  7. 某公司的雇员分为以下若干类;

    某公司的雇员分为以下若干类: Employee:这是所有员工总的父类, 属性:员工的姓名,员工的生日月份. 方法:getSalary(int month) 根据参数月份来确定工资,如果该月员工过生日, ...

  8. Java基础---封装继承静态

    封装&this关键字&静态 封装 封装:隐藏事物的属性和实现细节,并对外提供公开的访问方式. 属性私有化:private 可修饰的内容:成员变量.成员方法.构造方法.内部类被priva ...

  9. 第二十八节:Java基础-进阶继承,抽象类,接口

    前言 Java基础 - 进阶继承,抽象类,接口 进阶继承 class Stu {int age = 1; } class Stuo extends Stu {int agee = 2; } class ...

  10. Java基础篇--继承(inherit),多态(Polymorphism)

    Java基础篇--继承(inherit),多态(Polymorphism) 1. 继承概述 1.1 什么是继承 1.2 为什么要使用继承 1.3 继承的特点 1.4 继承的优点 2. 组合设计模式 2 ...

最新文章

  1. mysql not null 性能_如何使用NULL提高MySQL查询的性能?
  2. c++全局变量,局部变量不赋初值的区别
  3. 【Flutter】底部导航栏页面框架 ( BottomNavigationBar 底部导航栏 | PageView 滑动页面 | 底部导航与滑动页面关联操作 )
  4. prim算法_贪心算法详解(附例题)
  5. boost::python::def相关的测试程序
  6. mysql的count报错_Mysql报错注入原理分析count、rand、groupby
  7. 去除内存上的警告,避免程序崩掉
  8. QPW 点评表(tf_appraise)
  9. Java 栈的存储过程
  10. 细说Golang的JSON解析
  11. python正则表达式笔记之字符集合的使用
  12. python scipy.signal 包络_python scipy signal.freqz用法及代码示例
  13. 一台 ZXHN F650(GPON ONU) 学习小记
  14. UG塑胶模具设计培训,、胶模具成型工艺培训
  15. “自刎而死”的李贽之 “童心说”
  16. h5盲盒商城源码 修复版 附带详细教程
  17. matlab解韩信点兵问题,小学数学题目巧解—韩信点兵问题
  18. 初始化云硬盘切换云主机挂载验证lvm跨主机可读
  19. sodo 赋予非管理员用户临时权限
  20. Java List去重 Lis集合去重 List去重效率对比 List去重复元素效率对比 List去重效率

热门文章

  1. python风变编程和扇贝编程_到底是扇贝编程还是风变编程?
  2. 找出大于200的最小的质数
  3. 路飞学城Python-Day49
  4. 开启迅盘:ReadyBoost和ReadyDrive的开启方法
  5. 敌兵布阵(HDU - 1166)(线段树的点更新-区间查询)
  6. Filebeat log @timestamp处理
  7. 彩色证件照片常用的红色、蓝色背景颜色值
  8. 【转载】DIY新浪微博Android手机客户端(一)(二)(三)完
  9. android 免root 安装xposed,xposed框架免root安装|VAExposed(xposed框架免root版本)1.97最新版 - 维维软件园...
  10. 【PTA-python】第4章-15 换硬币 (20 分)