/* *比较过程思路: *1、两个对象指向位置相同,那么他们就相等,return后跳出函数,不再往下执行 *2、指向位置不同,有3情况 *a:这两对象类型相同,并且内容相同,也属于相等 *b:类型相同,内容不同,属于不等; *c:类型不同,属于不等 */ class ObjectEquals{ public static void main(String[]args){ Person p1 = new Person(4); Person p2 = new Person(4); System.out.println(p1.equals(p2)); } } class Person{ private int age; public Person(int age){ this.age = age; } public boolean equals(Object obj){ //内存地址相同,返回true不再执行 if(this == obj) return true; //位置不同,类型相同 if(obj instanceof Person){ Person p = (Person)obj;//多态,向下转型,父类对象引用子类特有对象时,应向下转型 return this.age == p.age; } //位置不同,类型不同,返回false else return false; } }
时间: 2024-12-28 01:29:57