java - 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
当我只在我的主类中使用储蓄账户时,它在正确的输出下工作正常。我需要储蓄账户和活期账户的数据。
解决方案
推荐阅读
- arrays - 在 Ruby 中添加具有数组的哈希并添加到该数组
- ssh - Cyberark 的 ssh 配置文件和用户名
- python - 全局对象定义
- c - 有没有办法将变量放在 C 中的 %04d 之类的字符串格式中?所以我可以让它根据可变结果而变化吗?
- c++ - 如何传递一个指针变量,我可以在不同的类中使用它?
- javascript - 数组中的 JS 数组 - 添加新的“迷你数组”
- javascript - 按键时在浏览器控制台中自动执行代码(firefox)
- excel - Excel:如何提取文本字符串中的文本直到分隔符
- python - 计算循环通过列表的数据框和数组列表
- ios - 如何在 GROUP BY 之前对 Core Data 记录进行排序?