首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从子类调用超类方法

从子类调用超类方法
EN

Stack Overflow用户
提问于 2017-07-20 16:08:58
回答 4查看 2.5K关注 0票数 0

我正在用一个超类Account和一个不能透支的子类SavingsAccount来建模一个银行帐户。当从主类调用时,makeWithdrawal()方法应该检查取款是否大于输入的余额和提示,然后编辑余额。

我如何从makeWithdrawal()调用Account方法并在SavingsAccount中使用Super关键字覆盖它?我的编译器给我“错误:不兼容类型:缺少返回值”。

Account中的方法

代码语言:javascript
复制
double makeWithdrawal(double withdrawal)    {
    return balance -= withdrawal;
}

(很简单)这个方法最初是抽象的,但它导致了错误。

SavingsAccount中的方法

代码语言:javascript
复制
    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);
            }
    }
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-07-20 16:15:53

问题在于

返回;

你应该把它换成

退货退货;

代码语言:javascript
复制
    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);
        }
}
票数 0
EN

Stack Overflow用户

发布于 2017-07-20 16:13:34

问题不在于您调用super.makeWithdrawl(),这是正确的。它带有上面的return子句中的空if语句。您的逻辑得到更新提取金额是明智的,但您需要返回新的余额时,您这样做。我建议将调用移到条件之外的super.makeWithdrawl()

代码语言:javascript
复制
if(withdrawal > getBalance())  {
    withdrawal = Input.getDouble("Your withdrawal cannot be larger than your balance. Enter a withdrawal <= "+getBalance());
}
return super.makeWithdrawal(withdrawal);

如果原来的提款金额太大,这将使用更新的提款金额。

票数 1
EN

Stack Overflow用户

发布于 2017-07-20 16:14:12

如果

代码语言:javascript
复制
if (withdrawal > getBalance())  {
            withdrawal = Input.getDouble("Your withdrawal cannot be larger than your balance. Enter a withdrawal <= "+getBalance());
            return;
        }

您需要返回双值,而不是简单的返回。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45220018

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档