Java基础--封装--继承 某公司的雇员分为以下若干类:Employee:这是所有员工总的父类。 SalariedEmployee:Employee的子类
题目:
某公司的雇员分为以下若干类:
- Employee:这是所有员工总的父类,属性:员工的姓名,员工的生日月份。
方法:getSalary(int month) 根据参数月份来确定工资,如果该月员工过生日,则公司会额外奖励100元。 - SalariedEmployee:Employee的子类,拿固定工资的员工。属性:月薪。
- HourlyEmployee:Employee的子类,按小时拿工资的员工,每月工作超出160小时的部分按照1.5倍工资发放。属性:每小时的工资、每月工作的小时数。
- SalesEmployee:Employee的子类,销售人员,工资由月销售额和提成率决定。属性:月销售额、提成率。
- 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的子类相关推荐
- # 封装,抽象类,继承,重写java编程题 问题描述 ``` 某公司的雇员分为以下若干类: Employee:这是所有员工总的父类,属性:员工的姓名,员工的生日月份。 方法:getSalary(int
封装,抽象类,继承,重写java编程题 问题描述 某公司的雇员分为以下若干类: Employee:这是所有员工总的父类,属性:员工的姓名,员工的生日月份. 方法:getSalary(int month ...
- java编程---某公司的雇员分为以下若干类:Employee:这是所有员工总的父类,属性:员工的姓名,员工的生日月份。方法:getSalary(intmonth)根据参数月份来确定工资。
题目: 某公司的雇员分为以下若干类: Employee:这是所有员工总的父类, 属性: 员工的姓名,员工的生日月份. 方法:getSalary(intmonth) 根据参数月份来确定工资,如果该月员工 ...
- 某公司的雇员分为以下若干类 7-12
题目:某公司的雇员分为以下若干类写一个程序,把若干各种类型的员工放在一个Employee数组里,写一个方法,打印出某月每个员工的工资数额. 注意:要求把每个类都封装,不允许非私有化属性. Employ ...
- 某公司的雇员分为以下若干类: Employee:这是所有员工总的父类, 属性: 员工的姓名,员工的生日月份。 方法:getSalary(
代码 /*某公司的雇员分为以下若干类:Employee:这是所有员工总的父类,属性:员工的姓名,员工的生日月份.方法:getSalary(intmonth)根据参数月份来确定工资,如果该月员工过生日, ...
- Cola公司的雇员分为以下若干类:(知识点:多态) 4.1 ColaEmployee :这是所有员工总的父类,属性:员工的姓名,员工 的生日月份。方法:getSalary(int month) 根据
Cola公司的雇员分为以下若干类:(知识点:多态) 4.1 ColaEmployee :这是所有员工总的父类,属性:员工的姓名,员工 的生日月份.方法:getSalary(int month) 根据参 ...
- 某公司的雇员分为以下若干类:
某公司的雇员分为以下若干类: Employee: 这是所有员工总的父类, 属性:员工的姓名,员工的生日月份. 方法:getSalary(int month) 根据参数月份来确定工资,如果该 ...
- 某公司的雇员分为以下若干类;
某公司的雇员分为以下若干类: Employee:这是所有员工总的父类, 属性:员工的姓名,员工的生日月份. 方法:getSalary(int month) 根据参数月份来确定工资,如果该月员工过生日, ...
- Java基础---封装继承静态
封装&this关键字&静态 封装 封装:隐藏事物的属性和实现细节,并对外提供公开的访问方式. 属性私有化:private 可修饰的内容:成员变量.成员方法.构造方法.内部类被priva ...
- 第二十八节:Java基础-进阶继承,抽象类,接口
前言 Java基础 - 进阶继承,抽象类,接口 进阶继承 class Stu {int age = 1; } class Stuo extends Stu {int agee = 2; } class ...
- Java基础篇--继承(inherit),多态(Polymorphism)
Java基础篇--继承(inherit),多态(Polymorphism) 1. 继承概述 1.1 什么是继承 1.2 为什么要使用继承 1.3 继承的特点 1.4 继承的优点 2. 组合设计模式 2 ...
最新文章
- mysql not null 性能_如何使用NULL提高MySQL查询的性能?
- c++全局变量,局部变量不赋初值的区别
- 【Flutter】底部导航栏页面框架 ( BottomNavigationBar 底部导航栏 | PageView 滑动页面 | 底部导航与滑动页面关联操作 )
- prim算法_贪心算法详解(附例题)
- boost::python::def相关的测试程序
- mysql的count报错_Mysql报错注入原理分析count、rand、groupby
- 去除内存上的警告,避免程序崩掉
- QPW 点评表(tf_appraise)
- Java 栈的存储过程
- 细说Golang的JSON解析
- python正则表达式笔记之字符集合的使用
- python scipy.signal 包络_python scipy signal.freqz用法及代码示例
- 一台 ZXHN F650(GPON ONU) 学习小记
- UG塑胶模具设计培训,、胶模具成型工艺培训
- “自刎而死”的李贽之 “童心说”
- h5盲盒商城源码 修复版 附带详细教程
- matlab解韩信点兵问题,小学数学题目巧解—韩信点兵问题
- 初始化云硬盘切换云主机挂载验证lvm跨主机可读
- sodo 赋予非管理员用户临时权限
- Java List去重 Lis集合去重 List去重效率对比 List去重复元素效率对比 List去重效率
热门文章
- python风变编程和扇贝编程_到底是扇贝编程还是风变编程?
- 找出大于200的最小的质数
- 路飞学城Python-Day49
- 开启迅盘:ReadyBoost和ReadyDrive的开启方法
- 敌兵布阵(HDU - 1166)(线段树的点更新-区间查询)
- Filebeat log @timestamp处理
- 彩色证件照片常用的红色、蓝色背景颜色值
- 【转载】DIY新浪微博Android手机客户端(一)(二)(三)完
- android 免root 安装xposed,xposed框架免root安装|VAExposed(xposed框架免root版本)1.97最新版 - 维维软件园...
- 【PTA-python】第4章-15 换硬币 (20 分)