equals

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;
    }
}

 

posted @ 2016-12-20 22:54  xkfx  阅读(222)  评论(0编辑  收藏  举报