为什么我会从另一个(Java)调用构造函数?

Mun*_*lam 1 java

刚刚开始学习java,在我的教科书中我遇到的一this开始很混乱,但现在开始有意义了.现在,在我的书中,我们开始构造函数的基本应用程序,并在它所说的页面上作为旁注this,也可以用来调用其他构造函数.我有点困惑,然后看看关于SO的其他问题this.我想我现在已经达到了一定程度,但为什么我会想要这样做呢?考虑一下我刚刚编写的以下内容.

private double balance;
private double interest;
public Account(double initialBalance){
    balance = initialBalance;

}
public Account(double balance, double interest){
    this(0);
    balance = initialBalance;
    this.interest = interest;
}
Run Code Online (Sandbox Code Playgroud)

在这里this(0);,据我所知,寻找另一个带有一个参数,找到Account(double initialBalance)并设置initialBalance为零的构造函数.大.嗯,但为什么我不直接这样做呢?只需将余额设为零即可!我相信它非常有用,但我想不出任何例子.谢谢!

Pet*_*ser 5

它非常实用,可以避免代码重复:

public Account(){
    this(0);
}

public Account(double initialBalance){
    this(initialBalance, DEFAULT_INTEREST_RATE);
}

public Account(double balance, double interest){
    balance = initialBalance;
    this.interest = interest;
}
Run Code Online (Sandbox Code Playgroud)

具有较少参数的构造函数委托给具有更多参数的构造函数,为缺少的参数传递默认值.

如果这是不可能的,那么人们需要一个init(..)接受参数的人工方法,并且从所有的构造者那里调用.这不太安全,因为可以重复调用此方法.