gpt4 book ai didi

java - 无参数构造函数和带参数构造函数之间的关系

转载 作者:行者123 更新时间:2023-12-02 14:29:15 24 4
gpt4 key购买 nike

请看一下以下类(class):

public class Loan {

private double annualInterestRate;
private int numberOfYears;
private double loanAmount;
private java.util.Date loanDate;

// Default constructor
public Loan() {
this(2.5, 1, 1000);
}

}

对于代码行 this(2.5, 1, 1000); ,我在 Eclipse 中收到以下错误消息:“构造函数 Loan(double, int, int) 未定义”。添加带有参数的新构造函数时,此错误消失:

// Construct a loan with specified annual interest rate, number of years and loan amount
public Loan(double annualInterestRate, int numberOfYears, int loanAmount) {
this.annualInterestRate = annualInterestRate;
this.numberOfYears = numberOfYears;
this.loanAmount = loanAmount;
loanDate = new java.util.Date();
}

为什么创建带有参数的构造函数会消除默认构造函数中的“未定义”错误?这两个不同的构造函数如何相互关联?

我如何知道 this(2.5, 1, 1000) 中的值已分配给正确的数据字段?我假设 2.5 应该分配给 annualInterestRate,1 分配给 numberOfYears,1000 分配给 loanAmount。

最佳答案

在无参数构造函数中,行

        this(2.5, 1, 1000);

明确表示“为与当前构造函数相同的类调用另一个构造函数,但它接受这些参数”。

这就是为什么添加另一个构造函数可以解决问题。传递参数的顺序需要与参数在该构造函数中出现的顺序相匹配,该构造函数的参数列表定义了调用它时需要放置参数的顺序。

这两个构造函数之间的关系是链式的。具有 3 个参数的一个是主构造函数,另一个使用默认值调用主构造函数。以这种方式设计构造函数有助于一致地初始化对象,因为始终会调用单个主构造函数。 (例如,无论您调用哪个构造函数,loanDate 实例字段都会被设置。)

关于java - 无参数构造函数和带参数构造函数之间的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36288987/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com