Java错误: constructor Transaction in class Transaction cannot be applied to given types

标签 java class constructor

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

编写一个具体类 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-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;
}

看起来更优雅,恕我直言,因为这允许 future 的交易扩展也从零余额开始。

关于Java错误: constructor Transaction in class Transaction cannot be applied to given types,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49709421/

相关文章:

jQuery 根据选择框选项添加 css 类

JavaScript - 使用对象原型(prototype)来扩展方法的使用?

java - 如何从给定的 WEEK_OF_YEAR、DAY_OF_WEEK、YEAR 获取 Calendar.MONTH

c++ - 如何使用另一个变量访问对象的变量/方法

java - 用spring boot实现OTP登录

c++ - 队列类未正确出队

design-patterns - 静态工厂方法与实例(普通)构造函数?

constructor - 在 Julia 中为数学常数供电很慢

java - 为什么如果我尝试执行包中包含 main() 方法的类,我会收到错误消息?

java - 在 Java 中确定 Scala 对象的类