一个学生类,有name,age,addr3个属性,new出若干个学生对象,如果任意两个对象的name,age,addr3个属性值都相同,就认为是相同的对象,如何实现?
时间: 2024-03-11 21:49:36 浏览: 69
写一个类Student,包含三个属性学号id,姓名name和年龄age;要求覆盖基类Object中的ToString()方法和Equals()方法,使得直接输出Student对象时输出的是对象的id,name和age信息;并且当两个对象的学号相同时认为它们相等;
4星 · 用户满意度95%
可以重写学生类的`equals()`方法和`hashCode()`方法来实现。
首先在学生类中重写`equals()`方法来比较两个学生对象的属性是否相等,代码如下:
```java
public class Student {
private String name;
private int age;
private String addr;
// 构造函数和getter/setter方法省略
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (obj == this) {
return true;
}
if (!(obj instanceof Student)) {
return false;
}
Student other = (Student) obj;
return Objects.equals(this.name, other.name)
&& this.age == other.age
&& Objects.equals(this.addr, other.addr);
}
}
```
然后重写`hashCode()`方法,确保相同属性的学生对象返回的hashCode值相等,代码如下:
```java
@Override
public int hashCode() {
return Objects.hash(name, age, addr);
}
```
这样,当两个学生对象的name、age、addr属性值都相同时,它们的`equals()`方法返回true,同时它们的hashCode值也相等,这样就可以判断它们是相同的对象了。
阅读全文