首页 > 解决方案 > JAVA中银行账户程序的输出有问题

问题描述

这是我的接口类

interface InfBankAccount
{
void deposit(double amt);
boolean withdraw(double amt);
String toString();
}

这是我的抽象类

abstract class AbsBankAccount
{
private static long id;
protected String name;
protected long AccNo;
protected double currBalance;

public void deposit(double amt)
{
    currBalance += amt;
}

protected void AssignAccNo()
{
    AccNo = ++id;
}

public abstract boolean withdraw(double amt);

public static long getLastAccNo()
{
    return id;
}

public String toString()
{
    String str = " ";

    str = str + "\nName of Account Holder : " +name;
    str = str + "\nAccount Number : " +AccNo;
    str = str + "\nCurrent Balance : Rs." +currBalance;

    return str;
}

static 
{
    id = 100;
}
}

这是我的储蓄账户课程

class SavingBankAccount extends AbsBankAccount
{
protected double minBalance;

SavingBankAccount(String name, double currBalance, double minBalance)
{
    this.name = name;
    this.currBalance = currBalance;
    this.minBalance = minBalance;
    AssignAccNo();
}

public String toString()
{
    String str = super.toString();
    str = str + "\nMinimum Balance : Rs." + minBalance;
    return str;
}

public boolean withdraw(double amt)
{
    boolean flag = true;
    if(currBalance - amt < minBalance)
    {
        flag = false;
    }

    else
    {
        currBalance -= amt;
    }

    return flag;
}

public static long getLastAccNo()
{
    return AbsBankAccount.getLastAccNo();
}
}

这是我当前的银行账户

class CurrentBankAccount extends AbsBankAccount
{
protected double overDraftLimit;

CurrentBankAccount(String name, double currBalance, double odl)
{
    this.name = name;
    this.currBalance = currBalance;
    overDraftLimit = odl;
    AssignAccNo();
}

public String toString()
{
    String str = super.toString();
    str = str + "\nOverdraft Limit : Rs." +overDraftLimit;
    return str;
}

public boolean withdraw(double amt)
{
    boolean flag = true;
    if( overDraftLimit + currBalance < amt)
    {
        flag = false;
    }
    else
    {
        currBalance -= amt;
    }

    return flag;
}

public static long getLastAccNo()
{
    return AbsBankAccount.getLastAccNo();
}
}

这是我的主要课程

class InheritanceDemo
{
public static void main(String[] args)
{
    AbsBankAccount abs;
    abs = new SavingBankAccount("Issac Newton", 12000, 1000);
    System.out.println(abs);

    if(abs.withdraw(100))
    {
        System.out.println("\nWithdrawl Successful");
        System.out.println(abs);
    }
    else
    {
        System.out.println("\nWithdrawl Unsuccessful");
        System.out.println(abs);
    }

    InfBankAccount inf;
    inf = new CurrentBankAccount("Leonard Euler", 2000, 1000);
    System.out.println(inf);

    if(inf.withdraw(12000))
    {
        System.out.println("\nWithdrawl Successful");
        System.out.println(inf);
    }
    else
    {
        System.out.println("\nWithdrawl Unsuccessful");
        System.out.println(inf);
    }

    inf.deposit(55000);
    System.out.print(inf);
}
}

输出必须包含储蓄账户和当前账户的数据,但主类给我以下错误

不兼容的类型:CurrentBankAccount 无法转换为 InfBankAccount

当我只在我的主类中使用储蓄账户时,它在正确的输出下工作正常。我需要储蓄账户和活期账户的数据。

标签: javainheritanceinterfaceabstractbanking

解决方案


推荐阅读