题目要求
解题思路
1.一共涉及了5个类,父类是Employee,父类中有个属性定义的是MyDate类的对象,存储的是生日信息。两个子类HourlyEmployee、SalariedEmployee代表两种不同类型的员工。
最后一个是测试类PayrollSystem
2.值得讲一下的地方,是测试类中使用了Calendar类,获取当前时间,以后我们还将提到
3.测试中的逻辑要清楚,如
,这个地方父类是一个abstract类,不能造对象,但这里只是创建了一个Employee类型的数组名字叫p,不是造对象,
栈里有个emps,指向了堆空间的Employee数组,我们需要给数组再写入对象的时候就需要是子类了,如:
这里在SalariedEmolyee这个子类的构造器里new了MyDate对象并调用构造器还是第一次见。。。。
具体实现
父类Employee
package com.atguigu.exer;
/*
* 编写工资系统,实现不同类型员工(多态)的按月发放工资。
* 如果当月出现某个Employee对象的生日,则将该雇员的工资增加100元。
*
*/
abstract public class Employee {
private String name;
private int number;
private MyDate birthday;
public Employee() {
}
public Employee(String name, int number, MyDate birthday) {