首页 > 解决方案 > 为什么我们需要在同一个类中使用构造函数链接而不是使用方法?

问题描述

我正在学习构造函数链接,我得到了两个案例。一种是初始化父类,这是可以的。Java默认调用父类的构造函数,如果需要我们可以使用super。

我得到的另一个案例与代码冗余有关。下面是一个例子。

class Student {
    int id;
    String name, city;

    Student ( int id, String name, String city ) {
        this(id, name);
        this.city = city;
    }

    Student(int id, String name) {
        this.id = id;
        this.name  = name;
    }
    
    void display() {
        System.out.println( this.id + this.city + this.name);
    }

}

// 上面的例子很好,我可以看到我不必编写初始化名称和城市的代码,但可以编写相同的代码如下

class Student1 {
    int id;
    String name, city;

    Student1 ( int id, String name, String city ) {
        this.setStudent(id, name);
        this.city = city;
    }
    
    private void setStudent ( int id, String name) {
        this.id = id;
        this.name = name;
    }
    
    void display() {
        System.out.println( this.id + this.city + this.name);
    }
}

我试图了解是否存在任何需要构造函数链接和使用方法样式进行初始化的特定用例不适用。如果不是,那么一个比另一个有什么优势,或者为什么首选构造函数链接?

标签: javaoopconstructor-chaining

解决方案


推荐阅读