【发布时间】:2017-09-01 15:02:45
【问题描述】:
我已经获得了一个名为 Account 的超类,它带有用于初始化余额的构造函数,以及存款和提取余额的方法,余额被声明为私有。 (我根本无法在此类中添加或更改任何方法或变量)
然后,我创建了一个名为 SavingsAccount 的子类,其中包含一个接受初始余额的构造函数。如果初始余额为负数,则该帐户应初始化为余额 0。此外,它包含两个覆盖的方法,存款和取款,用于检查存款和取款的金额,看是否可能。这是提供给我的代码(帐户)和我编写的代码(储蓄帐户)。
我尝试在 if-else 条件中调用 super(),但 Java 给出了一个错误,即 super()call 必须是构造函数的第一行。那么,我该如何解决呢?另外,由于我在提供的 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;
}
}
【问题讨论】:
-
那么,我该如何解决这个问题? 你不知道。 另外,由于我在提供的 Account 类中没有 setBalance() 方法,我如何在我的 SavingsAccount 类中设置我的存款和取款方法的余额? 你不能。子类无法访问其父级的私有成员(至少不是没有反射,这不是一个好主意)。为什么不能修改
Account? -
嗯,它是我的导师提供给我的,我必须根据提供的类(帐户)创建子类,而不对提供的类进行任何更改。
标签: java inheritance overriding