我正在用一个超类Account和一个不能透支的子类SavingsAccount来建模一个银行帐户。当从主类调用时,makeWithdrawal()方法应该检查取款是否大于输入的余额和提示,然后编辑余额。
我如何从makeWithdrawal()调用Account方法并在SavingsAccount中使用Super关键字覆盖它?我的编译器给我“错误:不兼容类型:缺少返回值”。
Account中的方法
double makeWithdrawal(double withdrawal) {
return balance -= withdrawal;
}(很简单)这个方法最初是抽象的,但它导致了错误。
SavingsAccount中的方法
public double makeWithdrawal(double withdrawal) {
double tempbalance = getBalance();
if (withdrawal > getBalance()) {
withdrawal = Input.getDouble("Your withdrawal cannot be larger than your balance. Enter a withdrawal <= "+getBalance());
return;
}
else {
return super.makeWithdrawal(withdrawal);
}
}发布于 2017-07-20 16:15:53
问题在于
返回;
你应该把它换成
退货退货;
public double makeWithdrawal(double withdrawal) {
double tempbalance = getBalance();
if (withdrawal > getBalance()) {
withdrawal = Input.getDouble("Your withdrawal cannot be larger than your balance. Enter a withdrawal <= "+getBalance());
return withdrawal;
}
else {
return super.makeWithdrawal(withdrawal);
}
}发布于 2017-07-20 16:13:34
问题不在于您调用super.makeWithdrawl(),这是正确的。它带有上面的return子句中的空if语句。您的逻辑得到更新提取金额是明智的,但您需要返回新的余额时,您这样做。我建议将调用移到条件之外的super.makeWithdrawl():
if(withdrawal > getBalance()) {
withdrawal = Input.getDouble("Your withdrawal cannot be larger than your balance. Enter a withdrawal <= "+getBalance());
}
return super.makeWithdrawal(withdrawal);如果原来的提款金额太大,这将使用更新的提款金额。
发布于 2017-07-20 16:14:12
如果
if (withdrawal > getBalance()) {
withdrawal = Input.getDouble("Your withdrawal cannot be larger than your balance. Enter a withdrawal <= "+getBalance());
return;
}您需要返回双值,而不是简单的返回。
https://stackoverflow.com/questions/45220018
复制相似问题