根据定义toString()
返回“将对象的字符串表示形式返回为:
getClass().getName() + '@' + Integer.toHexString(hashCode())
但有时我可以看到即使它在我们的类中没有被覆盖,它也会返回与之关联的字符串。我的意思是Object.toString()
返回一些字符串而不是“ ClassName@HexCode
”。
这什么时候发生。请让我知道这背后的原因是什么??
只有当一个类使用覆盖(或继承覆盖)toString() 扩展另一个类时才有可能。
的默认行为toString()
是将对象返回为
getClass().getName() + '@' + Integer.toHexString(hashCode()).
但是,如果您toString()
在基类或子类中覆盖,您可以指定打印对象的方式。
可能在您的情况下,它使用基类的继承方法。
前任:
class Person {
private String myName; // name of the person
private int myAge; // person's age
private String myGender; // 'M' for male, 'F' for female
// constructor
public Person(String name, int age, String gender) {
myName = name;
myAge = age;
myGender = gender;
}
public String getName() {
return myName;
}
public int getAge() {
return myAge;
}
public String getGender() {
return myGender;
}
public void setName(String name) {
myName = name;
}
public void setAge(int age) {
myAge = age;
}
public void setGender(String gender) {
myGender = gender;
}
public String toString() {
return myName + ", age: " + myAge + ", gender: " + myGender;
}
}
public class Teacher extends Person {
//...
}
calling `toString();` method will call inherited `tOString()` method of base class and will return `return myName + ", age: " + myAge + ", gender: " + myGender;`