JAVA:重载方法——对父类方法进行重写
Java中直接定义的类默认继承了父类Object
常常需要重写的函数有equals()和toString()
equals()
默认定义:
public boolean equals(Object obj) {
return (this == obj);
}
如果对两个对象的某个属性用equals()进行比较,它的默认定义是比较两个对象指针是否指向同一个对象。而实际上我们常常需要的是对内容进行比较,这时候就需要进行改写。
Ctrl+O可以选择父类的方法进行重写
@Override
public boolean equals(Object obj) {
if(this==obj) returntrue; //判断待比较的两个是不是本来就是一个
boolean r= false;
if(obj instanceof Student){ //判断待比较对象是不是Student类
Student temp = (Student)obj; //类型转换
if(this.name.equals(temp.name)
&& this.grade== temp.grade)
r = true;
}
return r;
}
// Java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。
toString()
默认定义
public String toString() {
return getClass().getName() + "@" +Integer.toHexString(hashCode());
}
可以看出如果直接对对象的某个属性.toString,那么返回的是类名,并不是我们想要的。
Ctrl+O可以选择父类的方法进行重写
@Override
public String toString() {
String temp = "";
temp += "name: " + name+ "\n";
temp += "grade: " + grade+ "\n";
return temp;
}