【问题标题】:How to Print the object of polymorphic in java where only in single arrayjava - 如何在仅在单个数组中打印多态对象
【发布时间】:2015-07-01 12:53:15
【问题描述】:

我有关于如何在数组中打印多态对象的问题,继承适用。我知道如何将它存储在单个数组中,但是在打印对象时,我完全卡住了。

这是我的主要课程:

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());
        }
    }
}

这是我的带有抽象类的 Account 类:

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());
}

}

【问题讨论】:

  • 您调用display() 方法并相信它是正确的。
  • bank[d] == new Saving()这是错误的,你试试if (bank[d] instance of Saving)
  • @RealSkeptic 它说,不能使用 void 方法
  • 不要尝试打印它,只需调用它。
  • 谢谢大家,它使用@Palcente 代码工作。

标签: java arrays inheritance polymorphism


【解决方案1】:

其他方法是覆盖每个对象的 toString() 方法。

【讨论】:

    【解决方案2】:

    bank[d] == new Saving()这是错误的,你试试if(bank[d] instance of Saving)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-30
      • 1970-01-01
      • 1970-01-01
      • 2020-10-25
      • 2015-06-20
      • 1970-01-01
      • 2022-10-22
      相关资源
      最近更新 更多