我已经提供了一个名为Account的超类,带有构造函数来初始化余额,以及存款和提取余额的方法,余额被声明为私有。(我根本无法添加或更改此类中的任何方法或变量)
然后,我创建了一个名为SavingsAccount的子类,其构造函数接受初始余额。如果初始余额为负,则该帐户应以余额 0 进行初始化。此外,它包含两个覆盖方法,即存款和取款,用于检查存款和取款的金额以查看是否可能。这是我提供的代码(帐户)和我编写的代码(SavingsAccount)。
我尝试在 if-else 条件中调用 super(),但 Java 给出了一个错误,即 super() 调用必须是构造函数的第一行。那么,我该如何解决这个问题?另外,由于我在提供的 Account 类中没有 setBalance() 方法,我如何通过我的 SavingsAccount 类中的存款和取款方法设置余额?
Account.Java(用于测试,不可修改)
public class Account
{
private double balance;
// Constructor to initialise balance
public Account( double amount )
{
balance = amount;
}
// Overloaded constructor for empty balance
public Account()
{
this(0.0);
}
public void deposit( double amount )
{
balance += amount;
}
public void withdraw( double amount )
{
balance -= amount;
}
public double getBalance()
{
return balance;
}
}
SavingsAccount.java(我写的)
public class SavingsAccount extends Account
{
private int overDraftCount = 0;
public SafeAccount(double initial_balance)
{
if(initial_balance <0)
{
super(0.00);
}
else
{
super(initial_balance);
}
}
@Override
public void deposit(double amount)
{
if(amount < 0)
{
??? = getBalance();
}
else
{
??? = getBalance()+ amount;
}
}
@Override
public void withdraw(double amount)
{
if(amount < getBalance())
{
overDraftCount++;
??? = getBalance();
}
else
{
??? = getBalance() - amount;
}
}
public int overdraftAttempts()
{
return overDraftCount;
}
}
您可以更改构造函数以使用三元运算符:
public SafeAccount(double initial_balance) {
super(initial_balance < 0 ? 0.00 : initial_balance);
}
关于您的第二点,您将必须使用现有方法从/向帐户提取或存入储蓄,如下所示:
@Override
public void deposit(double amount) {
if(amount > 0) {
super.deposit(amount);
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句