网上看到的一个使用java解释链式调用的例子,看起来很清晰(来源忘记了)

初始化一个学生的信息一般写法:

Student mstudent = new Student()
mstudent.setStudentName("韩梅梅")
mstudent.setAge(18)
mstudetn.setSex("男")
mstudent.setNumber("123456")

链式调用写法:

Student mstudent = new Student().setStudentName("韩梅梅").mstudent.setAge(18).mstudetn.setSex("男").mstudent.setNumber("123456")

为什么调用一个方法之后可以直接调用下一个方法?
我们来看一下setStudentName()方法,如下面所示,每个方法返回的都是this,即当前对象实例化的Student:mstudent,那么每个方法返回的都是当前对象,后面每个方法都可以调用

public class Student{
    private String studentName;
    private String sex;
    private String age;
    private String number;
    public Student setNumber(String number) {
        this.number= number;
        return this;
    }
    public Student setStudentName(String studentName) {
        this.studentName= studentName;
        return this;
    }
    public Student setSex(String sex) {
        this.sex = sex;
        return this;
    }
    public Student setAge(int age) {
        this.age = age;
        return this;
    }
}