2015-04-23 53 views
2

我有問題如何打印數組中的多態對象,其中繼承是適用的。我知道如何將它存儲在單個數組中,但是在打印對象時,我完全被卡住了。如何在java中打印多態的對象,其中只有單個數組

這裏是我的主類:

public class AccountArray { 

public static void main(String[] args) { 
    Scanner in = new Scanner(System.in); 
    int n, i = 0; 
    int numAcc; 
    double balance, rate; 

    Account[] bank = new Account[2]; 

    do { 
     System.out.print("\n[1]Current || [2]Saving >> "); 
     n = in.nextInt(); 
     System.out.println("------------"); 

     if (n == 1) { 
      bank[i] = new Current(); 
      System.out.println("#Current#"); 
      System.out.println("------------"); 
      System.out.print("Please enter account number: "); 
      numAcc = in.nextInt(); 
      bank[i].setAccountNumber(numAcc); 
      System.out.print("Enter balance: "); 
      balance = in.nextDouble(); 
      bank[i].setAccountBalance(balance); 
      i++; 
     } else if (n == 2) { 
      bank[i] = new Saving(); 

      System.out.println("#Saving#"); 
      System.out.println("------------"); 
      System.out.print("Please enter account number: "); 
      numAcc = in.nextInt(); 
      bank[i].setAccountNumber(numAcc); 
      System.out.print("Enter balance: "); 
      balance = in.nextDouble(); 
      bank[i].setAccountBalance(balance); 
      System.out.print("Interest rate: "); 
      rate = in.nextDouble(); 
      ((Saving) bank[i]).setInterest(rate); 
      System.out.println("---------------------------------------"); 
      i++; 
     } 
    } while (i < bank.length); 

    //Output 
    System.out.println("### Data Output ###"); 
    for (int d = 0; d < bank.length; d++) { 

     System.out.println("--------------------"); 
     System.out.println("Account Number: \t" + bank[d].getAccountNumber()); 
     System.out.println("Balance : \t" + bank[d].getAccountBalance()); 
     if (bank[d] == new Saving()) { 
      System.out.println("Interest rate : " + ((Saving) bank[d]).getInterest()); 
     } 
    } 
} 

這裏是我的賬戶類抽象類:

public abstract class Account { 

private int numAcc; 
private double balance; 

public Account() { 

} 

public Account(int numAcc, double balance) { 
    this.numAcc = numAcc; 
    this.balance = balance; 
} 

public int getAccountNumber() { 
    return numAcc; 
} 

public void setAccountNumber(int numAcc) { 
    this.numAcc = numAcc; 
} 

public double getAccountBalance() { 
    return balance; 
} 

public void setAccountBalance(double balance) { 
    this.balance = balance; 
} 

public abstract void display(); 
} 

這裏是節省等級

public class Saving extends Account { 

private double interest; 

public Saving(int numAcc, double balance, double interest) { 
    super(numAcc, balance); 
    this.interest = interest; 
} 

public Saving() { 

} 

public void setInterest(double interest) { 

    this.interest = interest; 
} 

public double getInterest() { 

    return interest; 
} 

@Override 
public void display() { 
    System.out.println("Saving Account Information"); 
    System.out.println("account number: " + getAccountNumber()); 
    System.out.println("balance: RM " + getAccountBalance()); 
    System.out.println("interest: " + getInterest() + " %"); 
} 
} 

這是我當前的類:

public class Current extends Account { 

public Current(int accNum, double balance) { 
    super(accNum, balance); 
} 

public Current() { 

} 

@Override 
public void display() { 
    System.out.println("Current Account Information"); 
    System.out.println("account number: " + getAccountNumber()); 
    System.out.println("balance: RM " + getAccountBalance()); 
} 

} 
+1

你打電話了'顯示()'方法,並相信它是正確的。 – RealSkeptic

+2

'bank [d] ==新的保存()'這是錯誤的,你試試'if(bank [d]保存的實例)' – Palcente

+0

@RealSkeptic它說,void方法不能被使用 –

回答

1

其他方法是覆蓋toString()每個對象的方法。

0

bank[d] == new Saving()這是錯誤的,並嘗試if(bank[d] instance of Saving)