黑马程序员技术交流社区

标题: 为什么equals这种签名方式是错的 求解释 [打印本页]

作者: 尤圣回    时间: 2012-9-23 17:16
标题: 为什么equals这种签名方式是错的 求解释
public boolean equals(Point other) {
  return (this.getX() == other.getX() && this.getY() == other.getY());
}

作者: 黑马杨晨    时间: 2012-9-23 17:26
boolean equals(Object obj) ;
必需得是这个格式,你上面的格式是方法重载,不是覆盖!
作者: 王小闲7    时间: 2012-9-23 17:45
可能还需要重写hashCode()方法吧
作者: 郑世光    时间: 2012-9-23 18:02
要覆写一个方法时,必须要有相同的参数列表
你的参数是Point 类型,而Object中的参数是Object类型,显然是不同的。定义的这个方法就是以重载的方式存在了。因为此类还是会从Object类中
继承boolean equals(Object obj) 这个方法。
类型强制转换就可以解决问题了
public boolean equals(Object other) {
  Point  p=(Point ) other;
  return (this.getX() == p.getX() && this.getY() == p.getY());
}


作者: 赵永康    时间: 2012-9-23 18:15
楼上正解  你写的就是equals方法的重载,并不是复写
该用人家标准的形式
public boolean equals(Object obj){//必须的代码}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2