package abstractClasses;
import java.time.LocalDate;
/**
* Created by xkfx on 2016/12/20.
*/
public class Employee extends Person{
private String name;
private double salary;
private LocalDate hireDay;
public Employee(String name, double salary, int year, int month, int day){
super(name);
this.salary = salary;
hireDay = LocalDate.of(year, month, day);
}
public double getSalary(){
return salary;
}
public LocalDate getHireDay(){
return hireDay;
}
public String getDescription(){
return String.format("an employee with a salary of $%.2f", salary);
}
public void raiseSalary(double byPercent){
double raise = salary * byPercent / 100;
salary += raise;
}
public boolean equals(Object otherObject){
if(this == otherObject)
return true;
// 指向同一个对象就什么事情都没有了。
if(otherObject == null)
return false;
// 所比较对象指向null也不用比了。
if(this.getClass() != otherObject.getClass())
return false;
// 经以上比较可知,两个引用不指向同一个对象,并且两对象属于同类。
Employee other = (Employee)otherObject;
// 经过类型强制转化,才能能够访问otherObject对象具体类的实例域
// 测试实例域是否相同
return name.equals(other.name) && salary == other.salary && hireDay.equals(other.hireDay);
}
}
package abstractClasses;
/**
* Created by xkfx on 2016/12/20.
*/
public class Manager extends Employee{
private double bonus;
public Manager(String name){
super(name, 0, 2016, 10, 19);
}
public boolean equals(Object otherObject){
// 比较父类实例域是否相等
if(!super.equals(otherObject))
return false;
// 比较子类实例域是否相等
Manager other = (Manager)otherObject;
return this.bonus == other.bonus;
}
}