需求说明:
重写比较贵规则,判断两名学员(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+"\n"+"student1.equals(student3)为"+a2); } }
测试运行结果: