![](/img/trans.png)
[英](Java) error: constructor MinimaxThread in class MinimaxThread cannot be applied to given types
[英]Java error: constructor Transaction in class Transaction cannot be applied to given types
我正在尝试回答以下提示:
编写一个具体的 class ZeroBalance,它扩展了抽象的 class 交易,其adjustAccount
方法导致账户余额设置为零。 由于ZeroBalance
class 不使用金额参数,因此您的 class 应该有一个只需要两个 arguments 的构造函数,并且它应该覆盖toString
方法以便不提及任何金额。
我对编码很陌生,我对如何制作一个只需要两个 arguments 的构造函数感到困惑。
到目前为止,这是我的代码:
public class ZeroBalance extends Transaction
{
public ZeroBalance (String time, String date )
{
super(time, date);
}
public boolean adjustAccount ( Account acc )
{
acc.setBalance(0);
return true;
}
}
这是帐户 class:
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;
}
}
这是事务 class:
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;
}
恕我直言,这似乎更为优雅,因为这使将来的Transaction扩展程序也可以从零余额开始。
我晚了 4 年,但我把它记下来以防有人需要找到它。 本质上,您需要确保覆盖toString
并在super()
中包含0
。
public class ZeroBalance extends Transaction{
public ZeroBalance( String time, String date ){
super( 0, time, date );
}
public String toString(){
return getClass().getName() + " " + super.getTime() + " " + super.getDate();
}
public boolean adjustAccount(Account acc){
acc.setBalance( 0 );
return true;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.