0

根据定义toString()返回“将对象的字符串表示形式返回为:

getClass().getName() + '@' + Integer.toHexString(hashCode())

但有时我可以看到即使它在我们的类中没有被覆盖,它也会返回与之关联的字符串。我的意思是Object.toString()返回一些字符串而不是“ ClassName@HexCode”。

这什么时候发生。请让我知道这背后的原因是什么??

4

2 回答 2

4

只有当一个类使用覆盖(或继承覆盖)toString() 扩展另一个类时才有可能。

于 2013-09-03T12:53:31.687 回答
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;`
于 2013-09-03T13:01:46.980 回答