我正在尝试回答以下提示:
编写一个具体类 ZeroBalance,它扩展了抽象类 Transaction,其 adjustAccount
方法会导致帐户余额设置为零。由于 ZeroBalance
类不使用金额参数,因此您的类应该有一个仅接受两个参数的构造函数,并且它应该重写 toString
方法,以免提及任何金额。
我对编码还很陌生,我对如何创建只需要两个参数的构造函数感到困惑。
这是迄今为止我的代码:
public class ZeroBalance extends Transaction
{
public ZeroBalance (String time, String date )
{
super(time, date);
}
public boolean adjustAccount ( Account acc )
{
acc.setBalance(0);
return true;
}
}
这是帐户类:
public class Account {
private String myName;
private double myBalance;
public Account ( String name, double balance )
{
myName = name;
myBalance = balance;
}
public String getName()
{
return myName;
}
public void setName ( String name )
{
myName = name;
}
public double getBalance()
{
return myBalance;
}
public void setBalance( double balance )
{
myBalance = balance;
}
public String toString()
{
return "Account holder: " + myName + "; Current balance: $" +
myBalance;
}
}
这是 Transaction 类:
public abstract class Transaction {
private double myAmount;
private String myTime;
private String myDate;
public Transaction ( double amount, String time, String date )
{
myAmount = amount;
myTime = time;
myDate = date;
}
public double getAmount()
{
return myAmount;
}
public String getTime ()
{
return myTime;
}
public String getDate()
{
return myDate;
}
public String toString()
{
return getClass().getName() + " " + myAmount + " " + myTime + " " +
myDate;
}
public abstract boolean adjustAccount ( Account acc );
}
最佳答案
喜欢jb-nizet和 shahaf提到过,您在调用缺少参数的基类构造函数时遇到问题。您可以按如下方式解决此问题:
public class ZeroBalance extends Transaction
{
private static final double ZERO_BALANCE_AMOUNT = 0.0;
public ZeroBalance (String time, String date )
{
super(time, date,ZERO_BALANCE_AMOUNT);
}
// ....
// ....
}
但是
我实际上建议您向 Transaction 添加另一个构造函数,如下所示:
public abstract class Transaction {
private static final double ZERO_AMOUNT = 0.0;
private double myAmount;
private String myTime;
private String myDate;
public Transaction ( String time, String date )
{
myAmount = ZERO_AMOUNT;
myTime = time;
myDate = date;
}
看起来更优雅,恕我直言,因为这允许 future 的交易扩展也从零余额开始。
关于Java错误: constructor Transaction in class Transaction cannot be applied to given types,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49709421/