Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从子类调用超类方法_Java_Inheritance_Subclass_Superclass_Bank - Fatal编程技术网

Java 从子类调用超类方法

Java 从子类调用超类方法,java,inheritance,subclass,superclass,bank,Java,Inheritance,Subclass,Superclass,Bank,我正在用一个超类account和一个不能透支的子类SavingsAccount对一个银行账户进行建模。从主类调用makedrawing()方法时,应该检查提取是否大于余额,并提示输入,然后编辑余额 如何从Account调用makedrawing()方法,并使用super关键字在SavingsAccount中重写它?我的编译器给了我“错误:不兼容类型:缺少返回值” 科目中的方法: double makeWithdrawal(double withdrawal) { return ba

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

如何从
Account
调用
makedrawing()
方法,并使用super关键字在
SavingsAccount
中重写它?我的编译器给了我“错误:不兼容类型:缺少返回值”

科目中的方法

double makeWithdrawal(double withdrawal)    {
    return balance -= withdrawal;
}
    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);
            }
    }
(非常简单。)这个方法最初是抽象的,但它会导致错误

SavingsAccount
中的方法:

double makeWithdrawal(double withdrawal)    {
    return balance -= withdrawal;
}
    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);
            }
    }
public双重提款(双重提款){
double tempbalance=getBalance();
如果(取款>获取余额()){

取款=输入。getDouble(“您的取款不能大于您的余额。如果我理解正确,请输入取款:

Account是基类,SavingsAccount是子类

然后:
super.makedrawing(撤回);

定义类时还要确保继承:

public class SavingsAccount extends Account{...}

问题不在于您对
super.makeDrumpl()的调用
,这是正确的。它上面的
if
子句中包含空的
return
语句。您获取更新取款金额的逻辑是合理的,但您需要在执行此操作时返回新余额。我建议将调用移至
super.makedrawul()
条件之外:

if(withdrawal > getBalance())  {
    withdrawal = Input.getDouble("Your withdrawal cannot be larger than your balance. Enter a withdrawal <= "+getBalance());
}
return super.makeWithdrawal(withdrawal);
if(取款>获取余额()){
取款=输入。getDouble(“您的取款不能大于您的余额。请在if中输入取款)

if (withdrawal > getBalance())  {
            withdrawal = Input.getDouble("Your withdrawal cannot be larger than your balance. Enter a withdrawal <= "+getBalance());
            return;
        }
if(取款>获取余额()){
取款=输入。getDouble(“您的取款不能大于您的余额。请输入取款问题在于

返回

你应该把它换成

退换货

public双重提款(双重提款){
double tempbalance=getBalance();
如果(取款>获取余额()){

取款=Input.getDouble(“您的取款不能大于您的余额。请输入取款
super.makedrawing()
I had super.makedrawing()in SavingsAccount in else())。当你这样做时会发生什么?可能是OP的重复,你需要指出错误发生的位置。答案比你说的要简单得多。没有回答问题。谢谢,我会试试这个