zoukankan      html  css  js  c++  java
  • object equal

    package equals;

    public class EqualsTest {
    public static void main(String[] args) {
    Employee alice1 = new Employee("Alice Adams", 75000, 1987, 12, 15);
    Employee alice2 = alice1;
    Employee alice3 = new Employee("Alice Adams", 75000, 1987, 12, 15);
    Employee bob = new Employee("Bob", 50000, 1989, 10, 1);

    System.out.println("alice1==alice2:" + (alice1 == alice2));
    System.out.println("alice1==alice3:" + (alice1 == alice3));
    System.out.println("alice1.equals(alice3):" + alice1.equals(alice3));
    System.out.println("bob.toString():" + bob.toString());

    Manager carl = new Manager("Carl Cracker", 80000, 1987, 12, 15);
    Manager boss = new Manager("Carl Cracker", 80000, 1987, 12, 15);

    boss.setBonus(5000);

    System.out.println("boss.toString():" + boss);
    System.out.println("carl.equals(boss):" + carl.equals(boss));
    System.out.println("alice1.hashCode():" + alice1.hashCode());
    System.out.println("alice3.hashCode():" + alice3.hashCode());
    System.out.println("bob.hashCode():" + bob.hashCode());
    System.out.println("carl.hashCode():" + carl.hashCode());

    }
    }



    package equals;

    import java.time.LocalDate;
    import java.util.Objects;

    public class Employee {
    private String name;
    private double salary;
    private LocalDate hireDay;

    public Employee(String name, double salary, int year, int month, int day) {
    this.name = name;
    this.salary = salary;
    hireDay = LocalDate.of(year, month, day);
    }

    public String getName() {
    return name;
    }

    public double getSalary() {
    return salary;
    }

    public LocalDate getHireDay() {
    return hireDay;
    }

    public void raiseSalry(double byPercent) {
    double raise = salary * byPercent / 100;
    salary += raise;
    }

    public boolean equals(Object otherObject) {
    // a quick test to see if the objects are identical
    if (this == otherObject) return true;

    //must return false if the explict parameter is null
    if (otherObject == null) return false;

    //if the classes don't match, they can't be equal
    if (getClass() != otherObject.getClass()) return false;

    //now we know otherObject is a non-null Employee
    Employee other = (Employee) otherObject;

    //test whether the fields have identical values

    return Objects.equals(name, other.name) && salary == other.salary && Objects.equals(hireDay, other.hireDay);
    }

    public int hashCode() {
    return Objects.hash(name, salary, hireDay);
    }

    public String toString() {
    return getClass().getName() + "[name=" + name + ",salary=" + salary + ",hireDay=" + hireDay + "]";
    }
    }


    package equals;

    public class Manager extends Employee {
    private double bouns;

    public Manager(String name, double salary, int year, int month, int day) {
    super(name, salary, year, month, day);
    bouns = 0;
    }

    @Override
    public double getSalary() {
    double baseSalary = super.getSalary();
    return baseSalary + bouns;
    }

    @Override
    public void raiseSalry(double byPercent) {
    super.raiseSalry(byPercent);
    }

    public void setBonus(double bouns) {
    this.bouns = bouns;
    }

    public boolean equals(Object otherObject) {
    if (!super.equals(otherObject)) return false;
    Manager other = (Manager) otherObject;
    // super.equals checked that this and other belong to the same class
    return bouns == other.bouns;
    }

    public int hashCode() {
    return java.util.Objects.hash(super.hashCode(), bouns);
    }

    @Override
    public String toString() {
    return super.toString() + "[bouns=" + bouns + "]";
    }
    }






  • 相关阅读:
    C#使用DataSet Datatable更新数据库的三种实现方法
    WIN10 安装不了NET3.5
    Linux和Windows下ping命令详解(转:http://linux.chinaitlab.com/command/829332.html)
    ALLOCATE语句分配FORTRAN动态数组方法(转自http://blog.csdn.net/zhuxianjianqi/article/details/8067174)
    gfortran、g77等编译器中使用多个文件
    gfortran编译Fortran数组问题
    GRUB学习笔记(转自http://www.cnblogs.com/evilzy/archive/2008/03/30/1130173.html)
    ubuntu下gcc、g++和gfortran版本切换
    Beta冲刺Day1
    Beta冲刺预备
  • 原文地址:https://www.cnblogs.com/rsapaper/p/7990316.html
Copyright © 2011-2022 走看看