java equals方法的覆盖

2014-11-24 11:22:26 · 作者: · 浏览: 4

vPublic boolean equals(Object obj);

vObject中的这个方法比较的是地址,因此我们应当在自己的类中按自己的要求覆盖这个方法;

v步骤:

测试形参是否为null;

测试类型是否匹配;

将obj强转为自己的类所属的类型。

最后,比较所有字段。使用==比较基本数据类型,使用equals方法比较对象

v如果所有字段均匹配返回true,否则返回false。

[java]
class PointTest {
private int x;
private int y;
public PointTest() {}
public PointTest(int x, int y) {
this.x = x;
this.y = y;
}
public boolean equals(Object obj) {
if((obj instanceof PointTest) && obj!=null) {
PointTest pt = (PointTest)obj;
if((pt.x==this.x) && (pt.y==this.y)) {
return true;
}
}
return false;
}
}

class PointTest {
private int x;
private int y;
public PointTest() {}
public PointTest(int x, int y) {
this.x = x;
this.y = y;
}
public boolean equals(Object obj) {
if((obj instanceof PointTest) && obj!=null) {
PointTest pt = (PointTest)obj;
if((pt.x==this.x) && (pt.y==this.y)) {
return true;
}
}
return false;
}
}