题目:
编写工资系统,实现不同类型员工(多态)的按月发放工资。如果当月出现某个Employee对象的生日,则将该雇员的工资增加100元。.
实验说明:
(1)定义一个Employee类, 该类包含:
private成员变量name,number, bithday,其中birthday为MyDate类的对象;abstract方法earnings();
toString()方法输出对象的name,number和birthday。
(2). MyDate类包含:
private成员变量year,month,day ;
toDateString()方法返回日期对应的字符串: xxxx年xx月xx日
(3)定义SalariedEmployee类继承Employee类,实现按月计算工资的员工处理。该类包括: private成 员变量monthlySalary;
实现父类的抽象方法earnings(),该方法返回monthlySalary值; toString()方 法输出员工类型信息及员工的name, number, birthday。
代码:
Employee
package com.chouxianglei;
public abstract class Employee {
private String name ;
private int number ;
private MyDate birthday ;
public Employee(String name, int number, MyDate birthday) {
super();
this.name = name;
this.number = number;
this.birthday = birthday;
}
public abstract double earnings();
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
public MyDate getBirthday() {
return birthday;
}
public void setBirthday(MyDate birthday) {
this.birthday = birthday;
}
@Override
public String toString() {
return "Employee [name=" + name + ", number=" + number + ", birthday=" + birthday.toString() + "]";
}
}
MyDate
package com.chouxianglei;
public class MyDate {
private int year ;
private int month ;
private int day ;
public MyDate(int year, int month, int day) {
super();
this.year = year;
this.month = month;
this.day = day;
}
public int getYear() {
return year;
}
public void setYear(int year) {
this.year = year;
}
public int getMonth() {
return month;
}
public void setMonth(int month) {
this.month = month;
}
public int getDay() {
return day;
}
public void setDay(int day) {
this.day = day;
}
public String toString() {
return year +"年" + month + "月" + day + "日";
}
}
SalariedEmployee
package com.chouxianglei;
public class SalariedEmployee extends Employee {
private double monthlySalary ;
public SalariedEmployee(String name, int number, MyDate birthday) {
super(name, number, birthday);
}
public SalariedEmployee(String name, int number, MyDate birthday, double monthlySalary) {
super(name, number, birthday);
this.monthlySalary = monthlySalary;
}
public double earnings() {
return monthlySalary;
}
public String toString() {
return "SalariedEmployee [ " + super.toString() + "]";
}
}
hour
package com.chouxianglei;
public class HourlyEmployee extends Employee {
private double wage ;
private double hour ;
public HourlyEmployee(String name, int number, MyDate birthday, double wage ,double hour) {
super(name, number, birthday);
this.wage = wage;
this.hour = hour;
}
public double earnings() {
return wage*hour;
}
public String toString() {
return "HourlyEmployee [ " + super.toString() + "]";
}
public double getWage() {
return wage;
}
public void setWage(double wage) {
this.wage = wage;
}
public double getHour() {
return hour;
}
public void setHour(double hour) {
this.hour = hour;
}
}
view
package com.chouxianglei;
public class PayrollSystem {
public static void main(String[] args) {
Employee[] arr = new Employee[2];
arr[0] = new SalariedEmployee("闫旭", 1001, new MyDate(1992, 2, 5) ,10000);
arr[1] = new HourlyEmployee("意义", 2000, new MyDate(2002, 2 , 2), 50, 100);
for(int i = 0 ; i < arr.length ; i++) {
System.out.println(arr[i]);
double earnings = arr[i].earnings();
System.out.println("月工资:"+earnings);
}
}
}