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

某公司的雇员分为以下若干类2012 年 12 月 28 日 某公司的雇员分为以下若干类 Employee 这是所有员工总的父类 属性 员工的姓名 员工的生日月份 方法 getSalary int month 根据参数月份来确定工资 如果该月员工过生日 则公司会额外奖励 100 元

大家好,我是讯享网,很高兴认识大家。
/*2012年12月28日 某公司的雇员分为以下若干类: Employee:这是所有员工总的父类, 属性:员工的姓名,员工的生日月份。 方法:getSalary(int month) 根据参数月份来确定工资, 如果该月员工过生日,则公司会额外奖励100元。 SalariedEmployee:Employee的子类,拿固定工资的员工。 属性:月薪 HourlyEmployee:Employee的子类,按小时拿工资的员工, 每月工作超出160小时的部分按照1.5倍工资发放。 属性:每小时的工资、每月工作的小时数 SalesEmployee:Employee的子类,销售人员,工资由月销售额和提成率决定。 属性:月销售额、提成率 BasedPlusSalesEmployee:SalesEmployee的子类,有固定底薪的销售人员, 工资由底薪加上销售提成部分。 属性:底薪。 写一个程序,把若干各种类型的员工放在一个Employee数组里, 写一个函数,打印出某月每个员工的工资数额。 注意:要求把每个类都做成完全封装,不允许非私有化属性。 */ public class Employee { public Employee(String name, int month) { this.name = name; this.month = month; } public float get_Salary(int month) { //如果月份为员工生日月份,则增加100的 if (month == this.month) { return 100; } else { return 0; } } private String name; //员工姓名 private int month; //员工的生日月份 public static void main(String args[]) { Employee a[] = new Employee[4]; a[0] = new SalariedEmployee("A", 2, 1000); a[1] = new HourlyEmployee("B", 3, 2000, 200); a[2] = new SalesEmployee("C", 4, 50000, (float) 0.1); a[3] = new BasedPlusSalesEmployee("D", 5, 50000, (float) 0.1, 1000); System.out.println("A的工资为" + a[0].get_Salary(2)); System.out.println("B的工资为" + a[1].get_Salary(2)); System.out.println("C的工资为" + a[2].get_Salary(2)); System.out.println("D的工资为" + a[3].get_Salary(2)); } } //拿固定工资的员工 class SalariedEmployee extends Employee { public SalariedEmployee(String name, int month, float salary) { super(name, month); this.salary = salary; } @Override public float get_Salary(int month) { return salary + super.get_Salary(month); } private float salary; //月薪 } //按小时拿工资的员工 class HourlyEmployee extends Employee { public HourlyEmployee(String name, int month, float salary, int hour) { super(name, month); this.salary = salary; this.hour = hour; } @Override public float get_Salary(int month) { //大于160小时的情况 if (hour > 160) { return (float) (salary * 160 + (hour - 160) * salary * 1.5 + super.get_Salary(month)); } else { return salary * hour + super.get_Salary(month); } } private float salary; //每小时工资 private int hour; //每月工作的小时数 } //销售人员 class SalesEmployee extends Employee { public SalesEmployee(String name, int month, float sale, float bonus) { super(name, month); this.sale = sale; this.bonus = bonus; } @Override public float get_Salary(int month) { return sale * bonus + super.get_Salary(month); } private float sale; //销售额 private float bonus; //提成率 } //有固定底薪的销售人员 class BasedPlusSalesEmployee extends SalesEmployee { public BasedPlusSalesEmployee(String name, int month, float sale, float bonus, float baseSalary) { super(name, month, sale, bonus); this.baseSalary = baseSalary; } @Override public float get_Salary(int month) { return baseSalary + super.get_Salary(month); } private float baseSalary; //底薪 } /* * 问题一:main函数需要放在与文件同名的public类中,否则运行时一直启动上次的程序 * 问题二:错误: 找不到或无法加载主类Test * 原因:原先把main函数放在Test类里面,运行发现错误后又把Test类删除, * 将class文件重构一下就可以了 */ 

讯享网
讯享网
小讯
上一篇 2025-03-24 14:26
下一篇 2025-02-07 20:40

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/13015.html