请问我这段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回答
同学你好,1、方法重写的定义:
1)、 有继承关系的子类中
2)、 方法名相同,参数列表相同
3)、 父类的返回类型必须与被子类重写的方法返回类型必须相同
4)、 与方法参数名无关
在Object类中,equals方法如下:
在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、同学贴出的代码,书写并没有问题,只是因方法名相同,参数列表不同,所以符合方法重载,而不是方法重写。
祝学习愉快!