重写equals()方法

需求说明:

重写比较贵规则,判断两名学员(Student)是否为同一对象

1、Student相关属性

  id(学号)、name(姓名)、age(年龄)

  如果两名学员的学号以及姓名相同,则为同一对象

学生类:

public class Students {
    private String name;
    private int id;
    private int age;
    
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public Students() {}
    public Students(String name, int id, int age) {
        super();
        this.name = name;
        this.id = id;
        this.age = age;
    }
    
    public boolean equals(Object ob) {
        //自反性
        if(this==ob){
            return true;
        }
        //instanceof比较判断是否是同一类或者子父类关系
        if(! (ob instanceof Students)){
            return false;
        }
        //判断是同一类或者子父类关系,再将Object类型强转为Students
        Students ob1 = (Students)ob;
        if(this.id == ob1.id && this.name.equals(ob1.name)) {
            return true;
        }else {
            return false;
        }
        
        
    }
    
}

测试类:

public class Text01 {
    public static void main(String[] args) {
        Students student1 = new Students("张三",01,18);
        Students student2 = new Students("李四",02,17);
        Students student3 = new Students("张三",01,17);
        boolean a1 = student1.equals(student2);
        boolean a2 = student1.equals(student3);
        System.out.println("student1.equals(student2)为"+a1+"
"+"student1.equals(student3)为"+a2);
    }
}

测试运行结果:

 

原文地址:https://www.cnblogs.com/Dean-0/p/11176022.html