看两段代码:
代码 1:
- class person
- {
- private String name;
- private int age;
- public person (String name , int age)
- {
- this.name = name;
- this.age = age;
- }
- public person(String name)
- {
- this.name = name;
- }
- }
- public class EqualsMethod
- {
- public static void main(String args[])
- {
- person A =new person("李旺");
- person B =new person("李旺");
- System.out.println(A.equals(B)?"同一个人":"不是同一个人");
- }
- }
代码 2:
- public class OverwriteEquals
- {
- public static void main(String args[])
- {
- person A = new person("李旺",25);
- person B = new person("李旺",25);
- System.out.println(A.equals(B)?"同一个人":"不是同一个人");
- }
- }
- class person
- {
- private String name;
- private int age;
- public person(String name , int age)
- {
- this.name = name;
- this.age = age;
- }
- public boolean equals(Object o)
- {
- boolean temp = true;
- person p1 = this;
- if(o instanceof person)
- {
- person p2 = (person)o;
- if(!(p2.name.equals(p1.name)&&p2.age==p1.age))
- {
- temp = false;
- }
- }
- else
- {
- temp = false;
- }
- return temp;
- }
- }
输出:
代码 1:
代码 2:
代码 2 中的 person 类是 Object 的子类 (class person 就相当于 class person extends Object), 在代码 2 中 person 类对 Object 类中内置的 equals 方法进行了覆写.
覆写的目的就是去比较对象中属性的内容, 如果采用内置的 equals 方法, 比较的是两个对象实例化后的内存地址, 内存地址肯定是不同的. 覆写 Object 类中 equals 方法的目的就是精确比较两个对象中的属性, 是一个常用手段.
这是个人学习的一点想法, 表述不一定准确, 欢迎批评指正.
来源: http://www.bubuko.com/infodetail-3716894.html