这是我的父类(super class):
public abstract class BankAccount
{
private String name;
private double balance;
final int OVERDRAFT_FEE = 35;
private static int accountNum=0;
public BankAccount(String name)
{
this.name=name;
balance=0;
accountNum++;
}
//various methods omitted
public abstract void endOfMonth();
public String toString(BankAccount account)
{
return "Account Name: "+name+"\nBalance: $"+balance+"\nAccount Number: "+accountNum;
}
}
这是我的子类:
public class CheckingAccount extends BankAccount
{
final int TRANSACTION_LIMIT = 3;
final int MINIMUM_BALANCE = 50;
final int FEE = 10;
private int transactionCount;
// various methods omitted
public void endOfMonth()
{
if(transactionCount>TRANSACTION_LIMIT)
{
int extra = transactionCount-TRANSACTION_LIMIT;
int extra_fee = FEE*extra;
super.setBalance((super.getBalance)-extra_fee);
}
if(super.getBalance()<MINIMUM_BALANCE)
{
super.setBalance((super.getBalance)-FEE);
}
}
}
在编译子类时,它给了我一个异常(exception):"constructor BankAccount in class BankAccount cannot be applied to given types; required: java.lang.String; found: no arguments; reason: actual and formal argument lists differ in length"
一开始我以为这是抽象方法的问题,但摆脱它并没有解决任何问题。想法?
最佳答案
您的父类构造函数声明为
public BankAccount(String name)
换句话说,它需要一个String
参数。
通过不显式地为 CheckingAccount
类提供构造函数,Java 编译器会创建如下所示的构造函数
public CheckingAccount() {
super();
}
换句话说,它不向您的父构造函数提供任何参数。
你需要改变这一点。使用适当的参数声明一个构造函数并将其传递给父级。
public CheckingAccount(String name) {
super(name);
}
关于java - 未知错误阻止子类的构造,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22082575/