如何在java中仅在单个数组中打印多态对象
我对如何在数组中打印多态对象有问题,因为继承是适用的。我知道如何将其存储在单个数组中,但当要打印对象时,我完全被卡住了 这是我的主要课程:如何在java中仅在单个数组中打印多态对象,java,arrays,inheritance,polymorphism,Java,Arrays,Inheritance,Polymorphism,我对如何在数组中打印多态对象有问题,因为继承是适用的。我知道如何将其存储在单个数组中,但当要打印对象时,我完全被卡住了 这是我的主要课程: public class AccountArray { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n, i = 0; int numAcc; double balance, rate; Acco
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 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());
}
}
另一种方法是重写每个对象的toString()方法
bank[d]==new Saving()
这是错误的,如果(bank[d]Saving实例)调用display()
方法并相信它是正确的。bank[d]==new Saving()
这是错误的,如果(bank[d]Saving实例)你尝试如果(bank[d]Saving实例)
@realpoint它说,void方法无法使用。不要尝试打印它,只需调用它。谢谢大家,它使用@Palcente代码工作。
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());
}
}