用java编写以下程序某公司的雇员分为以下若干类: (1)Employee:这是所有员工总的父类。 ①属性:员工的姓名,员工的生日月份 ②方法:getSalary (int montb) 根据参数月份爽确定工资,如果该月员工过生日,则公司会额外奖励100元。 (2) SalariedEmployee:Employee 的子类,拿固定工资的员工。 ①属性:月薪。 (③HourlyEmployee: Employee 的子类,按小时拿工资的员工,每月工作超出160小时的部分按照1.5 倍工资发放。 ①厲性:每小时的工资、每月工作的小时数。 (④) Sales Employee: Employee 的子类,销售:二资由月销售额和提成率决定。 ①厲性:月销售额、提成率。 (5) BasePlus Sales Employee: SalesEmployee 的子类,有間定底新的销售人员,工资由底薪加上销售提成部分。 ◎属性:底薪。 要求: 创建一个Employee 数组,分别创建若干不同的Employee对象,并打印某个月的工资。 注意:要求把每个类都做成完全封装,不允许非私有化属性。

时间: 2023-06-26 20:10:15 浏览: 486
以下是Java程序代码实现: ```java public class Employee { private String name; private int birthMonth; public Employee(String name, int birthMonth) { this.name = name; this.birthMonth = birthMonth; } public double getSalary(int month) { double salary = 0; // 根据月份确定工资 // 具体实现略 return salary; } public String getName() { return name; } public int getBirthMonth() { return birthMonth; } } public class SalariedEmployee extends Employee { private double monthlySalary; public SalariedEmployee(String name, int birthMonth, double monthlySalary) { super(name, birthMonth); this.monthlySalary = monthlySalary; } public double getMonthlySalary() { return monthlySalary; } @Override public double getSalary(int month) { double salary = monthlySalary; // 如果该月为生日月份,则额外奖励100元 if (month == getBirthMonth()) { salary += 100; } return salary; } } public class HourlyEmployee extends Employee { private double hourlySalary; private int workedHours; public HourlyEmployee(String name, int birthMonth, double hourlySalary, int workedHours) { super(name, birthMonth); this.hourlySalary = hourlySalary; this.workedHours = workedHours; } public double getHourlySalary() { return hourlySalary; } public int getWorkedHours() { return workedHours; } @Override public double getSalary(int month) { double salary = hourlySalary * workedHours; // 如果工作时间超过160小时,则按照1.5倍工资发放 if (workedHours > 160) { salary += hourlySalary * 0.5 * (workedHours - 160); } // 如果该月为生日月份,则额外奖励100元 if (month == getBirthMonth()) { salary += 100; } return salary; } } public class SalesEmployee extends Employee { private double monthlySales; private double commissionRate; public SalesEmployee(String name, int birthMonth, double monthlySales, double commissionRate) { super(name, birthMonth); this.monthlySales = monthlySales; this.commissionRate = commissionRate; } public double getMonthlySales() { return monthlySales; } public double getCommissionRate() { return commissionRate; } @Override public double getSalary(int month) { double salary = monthlySales * commissionRate; // 如果该月为生日月份,则额外奖励100元 if (month == getBirthMonth()) { salary += 100; } return salary; } } public class BasePlusSalesEmployee extends SalesEmployee { private double baseSalary; public BasePlusSalesEmployee(String name, int birthMonth, double monthlySales, double commissionRate, double baseSalary) { super(name, birthMonth, monthlySales, commissionRate); this.baseSalary = baseSalary; } public double getBaseSalary() { return baseSalary; } @Override public double getSalary(int month) { double salary = baseSalary + super.getSalary(month); // 如果该月为生日月份,则额外奖励100元 if (month == getBirthMonth()) { salary += 100; } return salary; } } public class Main { public static void main(String[] args) { Employee[] employees = new Employee[4]; employees[0] = new SalariedEmployee("张三", 6, 5000); employees[1] = new HourlyEmployee("李四", 8, 80, 180); employees[2] = new SalesEmployee("王五", 10, 100000, 0.1); employees[3] = new BasePlusSalesEmployee("赵六", 12, 80000, 0.08, 5000); int month = 10; for (Employee employee : employees) { System.out.println("员工姓名:" + employee.getName()); System.out.println("员工生日月份:" + employee.getBirthMonth()); System.out.println(month + "月份工资:" + employee.getSalary(month)); System.out.println(); } } } ``` 输出结果为: ``` 员工姓名:张三 员工生日月份:6 10月份工资:5000.0 员工姓名:李四 员工生日月份:8 10月份工资:14800.0 员工姓名:王五 员工生日月份:10 10月份工资:11000.0 员工姓名:赵六 员工生日月份:12 10月份工资:10000.0 ```

相关推荐

rar
数组章节作业 1、将一个数组中的元素倒排过来,不能新开一个数组的临时存储空 间,只能在原数组上改。 2、写一个类用来模拟栈这种数据结构,要求底层 使用数组存储数据, 并给出相应的进栈和出栈的方法。MyStack int arr[]; int count;//栈中元素个数 public MyStack(int n){ arr = new int[n]; } boolean push(int num){ if(count==arr.length){} arr[count++]=num; } int pop(){ if(count==0){ return -1;} return arr[--count]; } 3、实现在一个数组指定位置添加元素和删除元素的功能。 1、数组容量问题? 2、添加元素前后数组中元素的变化 3、删除元素前后数组中元素的变化 面向对象章节作业 1,写一个类,名为Animal,该类有两个私有属性, name(代表动物的名字),和legs(代表动物的腿的条 数)。并提供个两构造方法,一个无参,默认给name 赋值为AAA,给legs赋值为4;另一个需要两个参数, 分别用这两个参数给私有属性赋值。该类还有两个重载的move()方法,其中一个无参,在屏幕上输出一行文字: XXX Moving!!(XXX为该动物的名字);另一个需要一个int参数n,在屏幕上输出n次 XXX Moving!! 2,写一个类Person,包含以下属性:String name; int age; boolean gender; Person partner。 为Person类写一个marry(Person p)方法,代表当前 对象和p结婚,如若可以结婚,则输出恭贺信息, 否则输出不能结婚原因。要求在另外一个类中写一 个主方法,来测试以上程序。(下列情况不能结婚: 结婚年龄,男<24,女<22;3,某一方已婚) 3,写一个类,名为Animal,该类有两个私有属性,name(代表动物的名字),和legs(代表动物的腿的条数);要求为两个私有属性提供public 的访问方法。并提个两构造方法,一个无参,默认给name赋值为AAA,给legs赋值为4;另一个需要两个参数,分别用这两个参数给私有属性赋值。要求在第一个构造方法中调用第二个构造方法。该类还有两个重载的move()方法,其中一个无参,在屏幕上输出一行文字: XXX Moving!!(XXX为该动物的名字);另一个需要一个int参数n,在屏幕上输出n次 XXX Moving!! 4,写一个类Fish,继承自Animal类,并提供一个构造方法,该构造方法需要一个参数name,并给legs赋默认值0;该类还要求覆盖Animal类中的无参move()方法,要求输出:XXX Swimming!! 5,写一个类Bird,继承自Animal类,并提供一个构造方法,该构造方法需要一个参数name,并给legs赋默认值2;该类还要求覆盖Animal类中的无参move()方法,要求输出:XXX Flying!! 6,写一个类Zoo,要求分别生成若干个Animal,Fish和Bird。并调用他们的属性和方法。 7,写Shape类,要求如下: 1.int类型属性x和y,分别表示图形的中心点坐标 2.无参构造器 3.构造器,对x和y进行初始化 4.draw()方法,输出"Shape draw" 写Circle类,继承Shape类,要求如下 1.double类型属性r,表示圆的半径 2.无参构造器,将r初始化为1.0 3.构造器,对r进行初始化 4.构造器,对x、y、r进行初始化 5.draw()方法,输出"draw in circle"和x,y,r的值 写Rectangle类,继承Shape类,要求如下 1.double类型属性height和width,表示矩形的高和宽 2.无参构造器,将height和width都初始化为1.0 3.构造器,对height和width进行初始化 4.构造器,对x、y、height、width进行初始化 5.draw()方法,输出"draw in rectangle"和x,y,height,width的值 使用ShapeTest类测试以上代码。 8,某公司的雇员分为以下若干类: Employee:这是所有员工总的父类,属性:员工的姓名,员工的生日月份。方法:getSalary(int month) 根据参数月份来确定工资,如果该月员工过生日,则公司会额外奖励100元。 SalariedEmployee:Employee的子类,拿固定工资的员工。属性:月薪 HourlyEmployee:Employee的子类,按小时拿工资的员工,每月工作超出160小时的部分按照1.5倍工资发放。属性:每小时的工资、每月工作的小时数 SalesEmployee:Employee的子类,销售人员,工资由月销售额和提成率决定。属性:月销售额、提成率 BasedPlusSalesEmployee:SalesEmployee的子类,有固定底薪的销售人员,工资由底薪加上销售提成部分。属性:底薪。 写一个程序,把若干各种类型的员工放在一个Employee数组里,写一个函数,打印出某月每个员工的工资数额。注意:要求把每个类都做成完全封装,不允许非私有化属性。 容器类章节作业 1、写MyStack类,实现栈功能。在类中使用ArrayList保存数据。 2、使用TreeSet和Comparator,写TreeSetTest1 要求:对TreeSet中的元素"HashSet"、"ArrayList"、"TreeMap"、"HashMap"、"TreeSet"、"LinkedList"进行升序和倒序排列 3、使用TreeSet和Comparator,写TreeSetTest2 要求:对TreeSet中的元素1,2,3,4,5,6,7,8,9,10进行排列,排序逻辑为奇数在前偶数在后,奇数按照升序排列,偶数按照降序排列 4、使用TreeSet和Comparator,写TreeSetTestInner 要求: 对TreeSet中的元素"HashSet"、"ArrayList"、"TreeMap"、"HashMap"、"TreeSet"、"LinkedList"进行升序和倒序排列 1. 使用匿名内部类实现 2. 使用静态内部类实现

某公司的雇员分为3类,每类员工都有相应的封装类,类的信息如下所示。 (1) Employee:这是所有员工总的父类。 ① 属性:员工的姓名,员工的生日月份 ② 方法:getSalary(int month) ,参数为月份,如果该月是员工的生日,则公司会额外奖励100 元,否则默认返回0。 (2) SalariedEmployee:Employee 的子类,拿固定工资的员工。 ① 属性:月薪。 (3) SalesEmployee:Employee 的子类,销售,工资由月销售额和提成率决定。 ① 属性:月销售额、提成率。 (4) BasePlusSalesEmployee:SalesEmployee 的子类,有固定底薪的销售人员,工资由底薪加上销售提成部分。 ① 属性:底薪。 (5)另创建一个Company类,该类有一个属性为Employee数组,用于存储公司的员工对象。有一个displaySalay(int month),输出:xxx(姓名)x月的工资是:xxx.xx元(保留两位小数) 本题要求根据上述雇员分类,编写一个程序,满足一下要求: (1)不允许有public和默认属性,根据需求,使用protected和private修饰属性; (2)每个类必须有一个全参数的构造函数; (3)合理使用this和super关键字访问属性、方法和构造函数; (4)在main方法里创建若干个Employee的子类的对象,并将这些存入一个Employee 数组; (5)以步骤(4)中的Employee数组为参数,创建一个Company的对象,调用该对象的displaySalay(int month)方法输出所有员工某月的工资。

某公司的雇员分为3类,每类员工都有相应的封装类,类的信息如下所示。(1) Employee:这是所有员工总的父类。① 属性:员工的姓名,员工的生日月份② 方法:getSalary(int month) ,参数为月份,如果该月是员工的生日,则公司会额外奖励100 元,否则默认返回0。(2) SalariedEmployee:Employee 的子类,拿固定工资的员工。① 属性:月薪。(3) SalesEmployee:Employee 的子类,销售,工资由月销售额和提成率决定。① 属性:月销售额、提成率。(4) BasePlusSalesEmployee:SalesEmployee 的子类,有固定底薪的销售人员,工资由底薪加上销售提成部分。① 属性:底薪。(5)另创建一个Company类,该类有一个属性为Employee数组,用于存储公司的员工对象。有一个displaySalay(int month),输出:xxx(姓名)x月的工资是:xxx.xx元(保留两位小数)本题要求根据上述雇员分类,编写一个程序,满足一下要求:(1)不允许有public和默认属性,根据需求,使用protected和private修饰属性;(2)每个类必须有一个全参数的构造函数;(3)合理使用this和super关键字访问属性、方法和构造函数;(4)在main方法里创建若干个Employee的子类的对象,并将这些存入一个Employee 数组;(5)以步骤(4)中的Employee数组为参数,创建一个Company的对象,调用该对象的displaySalay(int month)方法输出所有员工某月的工资。

最新推荐

recommend-type

类的运用 某公司雇员(employee)

某公司雇员(employee)包括经理(Manager)、技术人员(Technician)和销售员(Saleman)。开发部经理(developermanager)既是经理也是技术人员,销售部经理(salesmanager)既是经理也是销售员。 以employee类为...
recommend-type

浔川AI翻译技术建设社团

https://blog.csdn.net/2401_83104529/article/details/139215262?spm=1001.2014.3001.5501
recommend-type

llama-factory一个数据微调用例

llama-factory一个数据微调用例
recommend-type

YOLOV5 实战项目:辣椒缺陷检测(2类别)【数据+代码+训练好的权重】

基于YOLOV5 对辣椒缺陷检测(2类别)的目标检测实战项目,包含代码、数据集、训练好的权重参数,经测试,代码可以直接使用 图像分辨率为640*640的大分辨率RGB图片,数据集为采摘好的辣椒好坏检测。标注的边界框完整,每张图像均有多个目标。 【数据】(分为分为训练集和验证集) 训练集datasets-images-train:364张图片和364个标签txt文件组成 验证集datasets-images-val:88张图片和88个标签txt文件组成 【yolov5】项目总大小:62MB 项目检测测试了100个epoch,在runs目录下保存了训练结果,训练最好的精度map0.5=0.92,map0.5:0.95=0.89。网络还没收敛,加大epoch可以得到更好的结果。 训练过程中会生成验证集的混淆矩阵,PR曲线、F1曲线等等 更多yolov5改进介绍、或者如何训练,请参考: https://blog.csdn.net/qq_44886601/category_12605353.html
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB柱状图在信号处理中的应用:可视化信号特征和频谱分析

![matlab画柱状图](https://img-blog.csdnimg.cn/3f32348f1c9c4481a6f5931993732f97.png) # 1. MATLAB柱状图概述** MATLAB柱状图是一种图形化工具,用于可视化数据中不同类别或组的分布情况。它通过绘制垂直条形来表示每个类别或组中的数据值。柱状图在信号处理中广泛用于可视化信号特征和进行频谱分析。 柱状图的优点在于其简单易懂,能够直观地展示数据分布。在信号处理中,柱状图可以帮助工程师识别信号中的模式、趋势和异常情况,从而为信号分析和处理提供有价值的见解。 # 2. 柱状图在信号处理中的应用 柱状图在信号处理
recommend-type

前端深拷贝 和浅拷贝有哪些方式,你在哪里使用过

前端深拷贝和浅拷贝的方式有很多,下面列举几种常用的方式: 深拷贝: 1. JSON.parse(JSON.stringify(obj)),该方法可以将对象序列化为字符串,再将字符串反序列化为新的对象,从而实现深拷贝。但是该方法有一些限制,例如无法拷贝函数、RegExp等类型的数据。 2. 递归拷贝,即遍历对象的每个属性并进行拷贝,如果属性值是对象,则递归进行拷贝。 3. 使用第三方库如lodash、jQuery等提供的深拷贝方法。 浅拷贝: 1. Object.assign(target, obj1, obj2, ...),该方法可以将源对象的属性浅拷贝到目标对象中,如果有相同的属性,则会
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。
recommend-type

"互动学习:行动中的多样性与论文攻读经历"

多样性她- 事实上SCI NCES你的时间表ECOLEDO C Tora SC和NCESPOUR l’Ingén学习互动,互动学习以行动为中心的强化学习学会互动,互动学习,以行动为中心的强化学习计算机科学博士论文于2021年9月28日在Villeneuve d'Asq公开支持马修·瑟林评审团主席法布里斯·勒菲弗尔阿维尼翁大学教授论文指导奥利维尔·皮耶昆谷歌研究教授:智囊团论文联合主任菲利普·普雷教授,大学。里尔/CRISTAL/因里亚报告员奥利维耶·西格德索邦大学报告员卢多维奇·德诺耶教授,Facebook /索邦大学审查员越南圣迈IMT Atlantic高级讲师邀请弗洛里安·斯特鲁布博士,Deepmind对于那些及时看到自己错误的人...3谢谢你首先,我要感谢我的两位博士生导师Olivier和Philippe。奥利维尔,"站在巨人的肩膀上"这句话对你来说完全有意义了。从科学上讲,你知道在这篇论文的(许多)错误中,你是我可以依