把 Ex6-4 InnerClassTest.java 改成了這個樣子.

 

//----------------------------------------------------
//poor vertion
//use BankAccount to implement interface ActionListener
//----------------------------------------------------
import java.awt.event.*;
import java.text.*;
import javax.swing.*;

public class InnerClassTest2
{
   
public static void main(String[] args)
   {
      BankAccount account
=new BankAccount(10000);
      account.start(
10);
      JOptionPane.showMessageDialog(
null,"Quit program?");
      System.exit(
0);
   }
}

class BankAccount implements ActionListener
{
   
public BankAccount(double initialBalance)
   {
      balance
=initialBalance;   
   }
   
   
//private consturctor
   private BankAccount(double initialBalance,double initialRate)
   {
      balance
=initialBalance;
      rate
=initialRate;
   }
   
   
public void start(double rate)
   {
      
this.rate=rate;
      ActionListener adder
=new BankAccount(this.balance,this.rate);   //inner class InterestAdder
      Timer t=new Timer(1000,adder);
      t.start();
   }
   
   
private double balance;
   
private double rate;
   

     
   
public void actionPerformed(ActionEvent event)
   {
     
double interest=balance*rate/100;
     balance
+=interest;

     NumberFormat formatter
=NumberFormat.getCurrencyInstance();
     System.out.println(
"balance="+formatter.format(balance));
   }   
}

 

效果上完全相同,但沒有可讀性

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章