根据定义toString()
返回“将对象的字符串表示形式返回为:
getClass().getName() + '@' + Integer.toHexString(hashCode())
但有时我甚至可以看到它在我们的类中不是Overriden,它返回与之关联的String。我的意思是Object.toString()
返回一些字符串但不是“ClassName@HexCode
”。
这是什么时候发生的。请让我知道这背后的原因是什么?
答案 0 :(得分:4)
只有当一个类使用override(或继承的重写)toString()扩展另一个类时才有可能。
答案 1 :(得分:1)
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;`