【问题标题】:Java error: constructor Transaction in class Transaction cannot be applied to given typesJava错误:类Transaction中的构造函数Transaction不能应用于给定类型
【发布时间】:2018-04-07 16:19:07
【问题描述】:

我正在尝试回答以下提示:

编写一个扩展抽象类 Transaction 的具体类 ZeroBalance,其 adjustAccount 方法导致 Account 的余额设置为零。由于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;
}

}

这是 Account 类:

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;
}
}

这里是事务类:

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 );
}

【问题讨论】:

    标签: java class constructor


    【解决方案1】:

    就像提到的jb-nizetshahaf 一样,您在调用缺少参数的基类构造函数时遇到问题。您可以通过以下方式解决此问题:

    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 扩展程序也可以从零余额开始。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-06
      • 2019-10-05
      • 2013-06-08
      相关资源
      最近更新 更多