我们时常要用到object类,但是他本身的toString方法和equals方法并不是我们所需要的话,这时候就要用到JavaBean类来重写Object类中的方法:
这里在java的编译工具idea里面十分容易,只要alt加insert或者鼠标右键,然后选中Generate,然后在里面寻找你要重写的方法名即可,接下来将给出Student类重写Object奇中类并在Test类中测试的代码:
首先是Student类的代码
package Object;
import java.util.Objects;
public class Student {
private int id;
private String name;
private int score;
public Student() {
}
//构造方法
public Student(int id, String name, int score) {
this.id = id;
this.name = name;
this.score = score;
}
//成员方法
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
@Override
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
", score=" + score +
'}';
}
@Override
public boolean equals(Object o) { //s1.equals(s2)
//this表示s1 o在这里表示传进来的s2
//比较两个对象的地址值是否相同 若相同说明是一个对象不需要再比较了 提高效率
if (this == o)
return true;
//判断要比较的两个对象是否是同一类型的 比如你不能拿学生和护士比较 提高了代码的健壮性
if (o == null || getClass() != o.getClass())
return false;
//向下转型 使父类可以用子类的相关属性
Student student = (Student) o;
return id == student.id &&
score == student.score &&
//这里调用的是String里面自带的equals方法
Objects.equals(name, student.name);
}
}
接下来是Test方法
package Object;
import java.sql.SQLOutput;
public class Test {
public static void main(String[] args) {
//测试toString方法
Student student1= new Student(1,"s1",66);
System.out.println(student1);
//输出语句直接打印对象,相当于调用了对象的toString方法
System.out.println(student1.toString());
Student student2= new Student(1,"s1",66);
boolean a=student1.equals(student2);
System.out.println(a);
}
}
然后很容易看出来,a应该是true下来给出来运行结果截图