由于构造函数存在问题,我在编译代码时遇到错误。
这是我的父类构造函数:
public BankAccount(final String theNameOfOwner, final double theInterestRate)
{
myName = theNameOfOwner;
myInterestRate = theInterestRate;
myBalance = 0;
myMonthlyWithdrawCount = 0;
myMonthlyServiceCharges = 0;
}
这是我的子类构造函数:
public SavingsAccount(final String theNameOfOwner, final double theInterestRate)
{
BankAccount(theNameOfOwner, theInterestRate);
myStatusIsActive = false;
myWithdrawalCounter = 0;
}
我收到以下错误:
SavingsAccount.java:7: error: constructor BankAccount in class BankAccount cannot be applied to given types;
{
^
required: String,double
found: no arguments
reason: actual and formal argument lists differ in length
错误说我在我的子构造函数中的BankAccount调用中需要String,double参数,如果我正确理解这一点。唯一的问题是看起来我的参数是正确的。任何帮助/输入都会非常感激,因为我刚刚开始编程Java!谢谢!
答案 0 :(得分:3)
这不是调用超类构造函数的方法。编译器认为您正在尝试调用一个名为BankAccount
的方法,该方法不存在。因为没有对超类构造函数的显式调用,所以它会尝试将隐式调用插入到默认的超类构造函数中,并且这也不存在,从而导致您看到编译器错误。
使用super
关键字来调用超类构造函数。变化
BankAccount(theNameOfOwner, theInterestRate);
到
super(theNameOfOwner, theInterestRate);
答案 1 :(得分:1)
我认为导致错误的行所需要的是以下内容:
super(theNameOfOwner, theInterestRate);