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; } }
时间: 2024-10-11 04:24:53