请问我这段equal方法重写有什么问题

来源:4-4 编程练习

慕仰2259325

2021-01-12 22:14:19

请问我这段equal方法重写有什么问题


相关代码:

//重写equals方法,比较两个对象是否相等(比较color,userName)
public boolean equals(Car c1, Car c2){
if(c1.color.equals(c2.color) && c1.userName.equals(c2.userName)){
return true;
}
else{
return false;
}
}


写回答

1回答

好帮手慕小班

2021-01-13

同学你好,1、方法重写的定义:

    ​    ​    ​        ​​1)、  有继承关系的子类中

    ​    ​    ​    ​    ​2)、 方法名相同,参数列表相同

    ​    ​    ​      ​  ​3)、  父类的返回类型必须与被子类重写的方法返回类型必须相同

    ​    ​    ​       ​ ​4)、 与方法参数名无关

在Object类中,equals方法如下:

http://img.mukewang.com/climg/5ffe5cb7095d906305400295.jpg

在car类中重写equals方法,就需要符合如上要求,参数列表相同,比如:

@Override
public boolean equals(Object obj) {
  if(obj == null) {
    return false;
  }
  Car temp = (Car)obj;
 if(this.getColor().equals(temp.getColor()) && this.getUserName().equals(temp.getUserName())) {
   return true;
 }else {
   return false;
 }

    ​2、同学贴出的代码,书写并没有问题,只是因方法名相同,参数列表不同,所以符合方法重载,而不是方法重写。

祝学习愉快!

0

0 学习 · 16556 问题

查看课程