檔案:Account.java
package bank2; public abstract class Account { int balance; Account(int money) { balance = money; } public abstract int inquiry(); }
檔案:AccountException.java
package bank2; public class AccountException extends Exception { public String getMessage() // 覆寫 Throwable 的 toString() { return "金額不可以為負數"; } public void showMessage() { // 自定方法 System.out.println("例外發生:請從新輸入金額"); } }
檔案:DemandDepositAccount.java
package bank2; public class DemandDepositAccount extends Account { DemandDepositAccount(int money){ super(money); } public void deposit(int money) throws AccountException { if (money < 0) { throw new AccountException(); } else balance += money; } public void withdraw(int money) throws AccountException{ if (money < 0) throw new AccountException(); else balance -= money; } public int inquiry() { return balance; } }
檔案:FixedDepositAccount.java
package bank2; public class FixedDepositAccount extends Account { FixedDepositAccount(int money) { super(money); if (money < 50000) throw new ArithmeticException("例外狀況:定期存款最少需 50,000 元"); } public FixedDepositAccount() { super(50000); } @Override public int inquiry() { // TODO Auto-generated method stub (new FixedDepositAccount() { public void showMe(){ System.out.println("本銀行定額存款10萬以上,另有優惠,請多加利用"); } }).showMe(); return balance; } }
檔案:AccountTest.java
package bank2; public class AccountTest { public static void main(String[] args) { try{ DemandDepositAccount demandDepositAcc = new DemandDepositAccount(1000); demandDepositAcc.deposit(500); demandDepositAcc.withdraw(300); System.out.println("活期賬戶餘額:" + demandDepositAcc.inquiry()); FixedDepositAccount fixedDepositAcc = new FixedDepositAccount(20000); System.out.println("定期賬戶餘額:" + fixedDepositAcc.inquiry()); } catch(AccountException e){ System.out.println(e.toString()); e.showMessage(); } } }執行結果
我們也可改寫 檔案:FixedDepositAccount.java
package bank2; public class FixedDepositAccount extends Account { FixedDepositAccount(int money) { super(money); try{ if (money < 50000) throw new ArithmeticException("例外狀況:定期存款最少需 50,000 元"); }catch(Exception e){ System.out.println(e.toString()); } } public FixedDepositAccount() { // TODO Auto-generated constructor stub super(50000); } @Override public int inquiry() { // TODO Auto-generated method stub (new FixedDepositAccount() { public void showMe(){ System.out.println("本銀行定額存款10萬以上,另有優惠,請多加利用"); } }).showMe(); return balance; } }執行結果
沒有留言:
張貼留言