The first, I'm sorry because I learn English not good.
I have 2 class (SavingAccount & CheckingAccout) extends BankAccount.
Now, I want to create ArrayList<...> include: saving & checking, then save to a file( example: "bank.dat").
I've tried but not success. The first, I create ArrayList<BankAccount>
I get the notice: "Exception in thread "main" java.lang.ClassCastException: business.BankAccount cannot be cast to business.SavingAccount
at business.AccountTester.main(AccountTester.java:43)"
Can you help me to use "ba.getInterestRate(0.5)"
Thanks!
I have 2 class (SavingAccount & CheckingAccout) extends BankAccount.
Now, I want to create ArrayList<...> include: saving & checking, then save to a file( example: "bank.dat").
I've tried but not success. The first, I create ArrayList<BankAccount>
ArrayList<BankAccount> accounts = new ArrayList<BankAccount>(); accounts.add(new SavingAccount(1, "a", 1000, 0.5)); SavingAccount ba = (SavingAccount) accounts.get(0); ba.getInterestRate(0.5);
I get the notice: "Exception in thread "main" java.lang.ClassCastException: business.BankAccount cannot be cast to business.SavingAccount
at business.AccountTester.main(AccountTester.java:43)"
Can you help me to use "ba.getInterestRate(0.5)"
Thanks!
package business;
import java.io.Serializable;
import java.util.Date;
import java.util.Calendar;
import java.util.TimeZone;
public class BankAccount implements Serializable{
private int accountNo;
protected String accountType;
private String customerName;
private double balance;
private Date openedOn;
public BankAccount() {
super();
balance = 0;
}
public BankAccount(int accountNo, String cusName, double balance) {
this.accountNo = accountNo;
this.customerName = cusName;
this.balance = balance;
this.openedOn = Calendar.getInstance(TimeZone.getTimeZone("GMT")).getTime();
}
public int getAccountNo() {
return accountNo;
}
public String getAccountType() {
return accountType;
}
public void setAccountType(String accountType) {
this.accountType = accountType;
}
public void setAccountNo(int accountNo) {
this.accountNo = accountNo;
}
public String getCustomerName() {
return customerName;
}
public void setCustomerName(String customerName) {
this.customerName = customerName;
}
public void setBalance(double balance) {
this.balance = balance;
}
public double getBalance() {
return balance;
}
public Date getOpenedOn() {
return openedOn;
}
public void setOpenedOn(Date openedOn) {
this.openedOn = openedOn;
}
public void deposit(double amount) {
balance = balance + amount;
}
public void withdraw(double amount) {
balance = balance - amount;
}
public void transfer(double amount, BankAccount other) {
withdraw(amount);
other.deposit(amount);
}
package business;
public class SavingAccount extends BankAccount {
private static final long serialVersionUID = 1L;
private double interestRate;
public SavingAccount() {
super();
interestRate = 0;
this.accountType = "Saving";
}
public SavingAccount(int accountNo, String cusName, double balance,
double interestRate) {
super(accountNo, cusName, balance);
this.interestRate = interestRate;
this.accountType = "Saving";
}
public double getInterestRate() {
return interestRate;
}
public void setInterestRate(double interestRate) {
this.interestRate = interestRate;
}
public void addInterest() {
double interest = getBalance() * interestRate / 100;
deposit(interest);
}
package business;
public class CheckingAccount extends BankAccount {
private int transactionCount;
public CheckingAccount() {
super();
transactionCount = 0;
this.setAccountType("Checking");
}
public CheckingAccount(int accountNo, String cusName, double balance) {
super(accountNo, cusName, balance);
this.transactionCount = 0;
this.setAccountType("Checking");
}
public int getTransactionCount() {
return transactionCount;
}
public void setTransactionCount(int transactionCount) {
this.transactionCount = transactionCount;
}
public void deposit(double amount) {
transactionCount++;
super.deposit(amount);
}
public void withdraw(double amount) {
transactionCount++;
super.withdraw(amount);
}
public void deductFees() {
if (transactionCount > IConstants.FREE_TRANSACTIONS) {
double fees = IConstants.TRANSACTION_FEE
* (transactionCount - IConstants.FREE_TRANSACTIONS);
super.withdraw(fees);
}
transactionCount = 0;
}
package business;
public interface IConstants {
static final int FREE_TRANSACTIONS = 6;
static final int TRANSACTION_FEE = 3;
public static String FILE_NAME = "Bank.dat";
}