Java调用父类的toString方法

在Java中,每个类都继承自Object类。如果没有显式地继承其他类,则默认继承自Object类。Object类提供了一些通用的方法,比如equals、hashCode以及toString等。toString方法用于返回一个表示该对象的字符串,默认情况下,返回的字符串由类名、符号“@”和对象的哈希码组成。但是,我们可以通过重写该方法,自定义对象的字符串表示。

重写toString方法

重写toString方法可以让我们以更直观、可读的方式打印对象信息。在实际开发中,我们经常需要将对象的内容以字符串的形式输出到日志、控制台或者其他输出流中。重写toString方法可以方便地实现这一需求。

下面是一个简单的示例代码,演示了如何重写toString方法:

public class Person {
    private String name;
    private int age;
    
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    
    // 重写toString方法
    @Override
    public String toString() {
        return "Person{name='" + name + "', age=" + age + "}";
    }
}

public class Main {
    public static void main(String[] args) {
        Person person = new Person("Alice", 25);
        System.out.println(person.toString()); // 调用toString方法打印对象信息
    }
}

上述代码中,Person类重写了toString方法,并将对象的name和age属性以特定的格式拼接成一个字符串,并返回。在main方法中,我们创建了一个Person对象,并调用toString方法将其打印出来。输出结果为:Person{name='Alice', age=25}

通过重写toString方法,我们可以方便地打印对象的详细信息,而不仅仅是默认的类名和哈希码。

调用父类的toString方法

在某些情况下,我们需要在子类的toString方法中调用父类的toString方法,以包含父类属性的信息。Java提供了一种简单的方式来实现这一需求,使用super.toString()方法即可。

下面是一个示例代码,演示了如何在子类的toString方法中调用父类的toString方法:

public class Person {
    private String name;
    private int age;
    
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    
    @Override
    public String toString() {
        return "Person{name='" + name + "', age=" + age + "}";
    }
}

public class Student extends Person {
    private String school;
    
    public Student(String name, int age, String school) {
        super(name, age);
        this.school = school;
    }
    
    @Override
    public String toString() {
        return super.toString() + ", school='" + school + "'";
    }
}

public class Main {
    public static void main(String[] args) {
        Student student = new Student("Bob", 20, "ABC University");
        System.out.println(student.toString()); // 调用toString方法打印对象信息
    }
}

在上述代码中,我们定义了一个Person类和一个Student类,Student类继承自Person类。Person类重写了toString方法,返回了包含name和age属性的字符串。Student类在重写toString方法时,通过super.toString()调用了父类的toString方法,然后再拼接上自己的school属性。在main方法中,我们创建了一个Student对象,并打印出其详细信息。输出结果为:Person{name='Bob', age=20}, school='ABC University'

通过调用父类的toString方法,我们可以在子类的toString方法中包含父类属性的信息,从而得到更完整的对象信息。

总结

重写toString方法可以让我们以自定义的方式打印对象信息。通过调用父类的toString方法,我们可以在子类的toString方法中包含父类属性的信息。

在实际开发中,我们经常使用toString方法来打印对象信息,方便调试和日志输出。重写toString方法可以使打印的信息更加有意义,更易于理解。

在设计类的时候,我们应该考虑重写toString方法,以提供更好的对象信息展示。通过合理使用toString方法,可以提高代码的可读性和可维护性