封装,抽象类,继承,重写java编程题

问题描述

某公司的雇员分为以下若干类: Employee:这是所有员工总的父类,属性:员工的姓名,员工的生日月份。
方法:getSalary(int month) 根据参数月份来确定工资,如果该月员工过生日,则公司会额外奖励100元。
SalariedEmployee:Employee的子类,拿固定工资的员工。 属性:月薪
HourlyEmployee:Employee的子类,按小时拿工资的员工,每月工作超出160小时的部分按照1.5倍工资发放。
属性:每小时的工资、每月工作的小时数
SalesEmployee:Employee的子类,销售人员,工资由月销售额和提成率决定。 属性:月销售额、提成率
BasePlusSalesEmployee:SalesEmployee的子类,有固定底薪的销售人员,工资由底薪加上销售提成部分。 属性:底薪。
写一个程序,把若干各种类型的员工放在一个Employee数组里,写一个方法,打印出某月每个员工的工资数额。
注意:要求把每个类都做成完全封装,不允许非私有化属性。

问题java代码


import java.util.Scanner;public abstract class Employee {private String name;private int birthdayMonth;public Employee() {super();}public Employee(String name, int birthdayMonth) {super();this.name = name;this.birthdayMonth = birthdayMonth;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getBirthdayMonth() {return birthdayMonth;}public void setBirthdayMonth(int birthdayMonth) {this.birthdayMonth = birthdayMonth;}public abstract double getSalary(int month);
}class SalariedEmployee extends Employee {private double monthSalary;public SalariedEmployee() {super();}public SalariedEmployee(String name, int birthdayMonth, double monthSalary) {super(name, birthdayMonth);this.monthSalary = monthSalary;}public double getMonthSalary() {return monthSalary;}public void setMonthSalary(double monthSalary) {this.monthSalary = monthSalary;}@Overridepublic double getSalary(int month) {if (month == getBirthdayMonth()) {monthSalary = monthSalary + 100;} else {}double salary = monthSalary;return salary;}
}class SalesEmployee extends Employee {private double saleroom;// 销售额private double rate;// 提成率public SalesEmployee() {super();}public SalesEmployee(String name, int birthdayMonth, double saleroom, double rate) {super(name, birthdayMonth);this.saleroom = saleroom;this.rate = rate;}public double getSaleroom() {return saleroom;}public void setSaleroom(double saleroom) {this.saleroom = saleroom;}public double getRate() {return rate;}public void setRate(double rate) {this.rate = rate;}@Overridepublic double getSalary(int month) {double salary;if (month == getBirthdayMonth()) {salary = (saleroom * rate) + 100;} else {salary = (saleroom * rate);}return salary;}
}class BasePlusSalesEmployee extends SalesEmployee {private double basicSalary;public BasePlusSalesEmployee() {super();}public BasePlusSalesEmployee(String name, int birthdayMonth, double saleroom, double rate, double basicSalary) {super(name, birthdayMonth, saleroom, rate);this.basicSalary = basicSalary;}public double getBasicSalary() {return basicSalary;}public void setBasicSalary(double basicSalary) {this.basicSalary = basicSalary;}@Overridepublic double getSalary(int month) {double salary = getSaleroom() * getRate() + basicSalary;if (month == getBirthdayMonth()) {salary += 100;} else {}return salary;}
}class HourlyEmployee extends Employee {private double salaryHour;//每小时工资private double mountHour;//一个月的工作小时数public HourlyEmployee() {}public HourlyEmployee(String name, int birthdayMonth, double salaryHour, double mountHour) {super(name, birthdayMonth);this.salaryHour = salaryHour;this.mountHour = mountHour;}public double getSalaryHour() {return salaryHour;}public void setSalaryHour(double salaryHour) {this.salaryHour = salaryHour;}public double getMountHour() {return mountHour;}public void setMountHour(double mountHour) {this.mountHour = mountHour;}@Overridepublic double getSalary(int month) {double salary;if (mountHour <= 160) {salary = salaryHour * mountHour;} else {salary = (mountHour - 160) * salaryHour * 1.5 + mountHour * salaryHour;}return salary;}
}class Test {public static void main(String[] args) {Employee[] em = new Employee[4];em[0] = new SalariedEmployee("王3", 8, 5000);em[1] = new SalesEmployee("李4", 11, 1000, 0.2);em[2] = new HourlyEmployee("杨5", 9, 20, 400);em[3] = new BasePlusSalesEmployee("张6", 7, 6000, 0.2, 3000);Scanner sc = new Scanner(System.in);System.out.println("请输入当前月份: ");int mouth = sc.nextInt();for (int i = 0; i < 4; i++) {System.out.print("姓名 : " + em[i].getName() + ",生日月份:   " + em[i].getBirthdayMonth()+ ", 本月工资: " + em[i].getSalary(mouth) + "\n");}}
}

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

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

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

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

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

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

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

  4. JAVA编程假定要为某个公司编写雇员工资支付程序,这个公司有各种类型的雇员(Employee),不同类型的雇员按不同的方式支付工资

    (1)经理(Manager)--每月获得一份固定的工资 (2)销售人员(Salesman)--在基本工资的基础上每月还有销售提成. (3)一般工人(Worker)--则按他每月工作的天数计算工资. 根 ...

  5. java设计一个形状shape_编程定义一个图形接口 Shape, 内含2个抽象方法 get... JAVA编程题:编一个程序包含一个接口 shape(该接......

    导航:网站首页 > 编程定义一个图形接口 Shape, 内含2个抽象方法 get... JAVA编程题:编一个程序包含一个接口 shape(该接... 编程定义一个图形接口 Shape, 内含2 ...

  6. java 编程题_最新JAVA编程题全集(50题及答案)92862

    <最新JAVA编程题全集(50题及答案)92862>由会员分享,可在线阅读,更多相关<最新JAVA编程题全集(50题及答案)92862(32页珍藏版)>请在人人文库网上搜索. ...

  7. 质量不同的球java编程_荐非常经典的java编程题全集-共50题(1-10)...

    非常经典的java编程题 程序1:斐波那契数列问题 题目概述: 古典问题: 有一对兔子,从出生第三个月起每月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多 ...

  8. java类求圆的面积周长_java编程 1. 设计一个求圆的面积和周长的类,要求:1计算当半径r,JAVA编程题。编写一个应用程序计算圆的周长和面积,设圆的半...

    问题标题 java编程 1. 设计一个求圆的面积和周长的类,要求:1计算当半径r,JAVA编程题.编写一个应用程序计算圆的周长和面积,设圆的半 2019-5-23来自ip:15.196.194.53的 ...

  9. java编程50_荐非常经典的java编程题全集-共50题(1-10)...

    非常经典的java编程题 程序1:斐波那契数列问题 题目概述: 古典问题: 有一对兔子,从出生第三个月起每月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多 ...

最新文章

  1. 2022-2028年中国金融安防行业深度调研及投资前景预测报告
  2. 一个c加一个g是什么牌子_一个G的流量60块钱,为什么会这么贵?
  3. (NO.00004)iOS实现打砖块游戏(八):游戏中小球与砖块的碰撞
  4. 伽马分布极大似然估计_一文通俗解释极大似然估计
  5. windows下搭建Apache+Mysql+PHP开发环境
  6. Spring Cloud 服务注册中心Eureka
  7. Tornado 上传文件及存储
  8. 打榜前10名:天池AI医疗人工智能辅助糖尿病遗传风险预测
  9. [转载] Python字典的setdefault()方法
  10. matlab调用cuda,Matlab 调用CUDA的总结(Windows、Ubuntu)
  11. 【eoeAndroid社区索引】Android控件知识汇总
  12. 汽车UDS诊断之诊断会话控制服务(0x10)深度剖析
  13. xposed框架修改手机串号教程_xposed 入门之修改手机 IMEI
  14. 孙氏太极拳--无极桩
  15. 【Java】线程池、Lambda表达式
  16. 夏天来了,来吃鹅厂新瓜,小马哥已吃
  17. http简介以及常见知识和http请求头,响应头,状态码,内容类型对照表分享(超实用)
  18. 排毒一年,长寿十年,排出毒素,一身轻松 要美容 先排毒
  19. Perl 邮件地址检查
  20. 如何打开微信dat文件

热门文章

  1. Fedora 26 利用 EasyScreenCast 长时间录制桌面视频 录屏
  2. 如何把森林转化成二叉树
  3. scrapy框架使用流程
  4. 浏览器指纹能破解吗?用户如何躲避浏览器指纹追踪保护隐私安全?
  5. C#关于操作符的重载
  6. 手写数字代码识别(pytorch)实现
  7. java腾讯云人脸识别接口
  8. 干货 | 体验设计详解
  9. Centos7查看IP地址方法
  10. Opencv -- 12图像色彩空间转换应用 -- 给证件照换颜色背景