2015-04-23 56 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)

相关问题