牛骨文教育服务平台(让学习变的简单)
博文笔记

关于重写toString方法

创建时间:2015-06-27 投稿人: 浏览次数:5483

学习Java的人都知道,Java所有类都是Object的子类。所以,所有的Java对象都可以调用Object类提供的方法。其中,toString()就是其中一个。下面讲解一下为什么会有重写toString()方法一说。

首先,我们先来创建一个Persion类,它只简单的包含 firstname 和 lastname,当然,加上它的setter 和 getter 法。放在com.bean包下:


public class Person {
    private String firstname;
    private String lastname;
    public String getFirstname() {
        return firstname;
    }
    public void setFirstname(String firstname) {
        this.firstname = firstname;
    }
    public String getLastname() {
        return lastname;
    }
    public void setLastname(String lastname) {
        this.lastname = lastname;
    }

}

接下来,新建一个类,名为Test,让它包含main函数:

public class Test {

    public static void main(String[] args) {
        Person p = new Person();
        p.setFirstname("Fire");
        p.setLastname("Water");
        System.out.println(p.toString());
    }
}

可以看到,运行之后,结果为:
Person@c17164

注:打印一个对象,可以直接System.out.println(p);其实println方法内部会自动调用p 的 toString() 方法。

但是,我们一般想要的结果并不是这样,因为Object类的toString()方法总是返回对象的所属类的类名 + @ + hashCode值,代表对象在内存的位置。这显然不能满足我们通常的需求。像这里,我们是希望能打印出p的全名出来,这时,就需要重写toString()方法,因为重写了toString()之后,那么p在调用toString()方法的时候,会优先调用自己类里的toString()方法。可自行回顾多态知识点
修改后的类如下:

public class Person {
    private String firstname;
    private String lastname;
    public String getFirstname() {
        return firstname;
    }
    public void setFirstname(String firstname) {
        this.firstname = firstname;
    }
    public String getLastname() {
        return lastname;
    }
    public void setLastname(String lastname) {
        this.lastname = lastname;
    }
    //重写toString方法
    public String toString(){
        return firstname + " " + lastname;
    }
}

这时,打印出来的结果就是
Fire Water
当然,可根据不同的需求来重写toString方法。

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。