public boolean equals(Object o){
if(o == null){
return false;
}
if(o == this){
return true;
}
if(o instanceof Point){
/*
* 子类转换为父类不需要做什么操作
*
* 但是父类转换为子类需要强制类型转换,
* 但是要注意,这可能出现类造型异常
*/
Point p = (Point)o;
//判断特征
return this.x==p.x&&this.y==p.y;
}
return false;
}
这里用到3个if语句的作用:
equals方法比较的是两个对象的内容;
1::因此第一个if判断次对象是否为Null,如果为null则没有必要再继续做内容比较;
2:第二个if判断这个对象是否和当前使用中的对象是同一个对象,如果是同一个对象,那么这两个引用间内容的 比较毫无疑问是一样的;
3:第三个if经过前面2个if的判断后,可以肯定这个对象不为Null,并且并非为同一个对象,因此此次比较才有意义,在这两个对象做比较的时候,必须是同一类型的对象才能够做比较,不同的种类比较没有意义;因此在此处需要对传入进来的对象进行强制类型转换,把这个对象转换成功后,然后才对这两个对象的属性进行比较,看是是否一样。