我想在抽象类类型的arraylist中填充值.Below是我的代码
public abstract class Account {
private int accountId;
private int customerId;
private double balance;
public Account(int accountId, int customerId, double balance) {
this.accountId = accountId;
this.customerId = customerId;
this.balance = balance;
}
public abstract double deposit(double sum);
public abstract double withdraw(double sum);
}
上面是我的抽象类。
现在我有另一个类bank
我要在其中定义并声明an arraylist
,我可以在其中填充我的值。
我宣称arraylist为
ArrayList<Account> al=new ArrayList<>();
现在我想将值传递给这个arraylist以供进一步使用,但我不能因为我们无法实例化抽象类。我尝试使用main方法在类中填充值但由于上述原因无法获取它
Account ac= new Account(1,100,25000);
ArrayList<Account>ac= new ArrayList<Account>();
ac.add(ac);
答案 0 :(得分:2)
答案 1 :(得分:2)
抽象类的重点是分解应用程序中的一些代码。在我看来,使用它作为超级类型是一种不好的做法,因为你应该使用接口。
为了对您的问题做出完整的回应,我会:
创建一个界面:Account.java
public interface Account {
public double deposit(double sum);
public double withdraw(double sum);
}
创建一个抽象类:AbstractAccount.java
public abstract class AbstractAccount {
protected int accountId;
protected int customerId;
protected double balance;
public Account(int accountId, int customerId, double balance) {
this.accountId = accountId;
this.customerId = customerId;
this.balance = balance;
}
}
最后为您的界面BankAccount.java提供默认实现
public class BankAccount extends AbstractAccount implements Account {
public Account(int accountId, int customerId, double balance) {
super(accountId, customerId, balance);
}
public double deposit(double sum) {
this.balance += sum;
}
public double withdraw(double sum) {
this.balance -= sum;
}
}
然后你应该操纵:
List<Account> accounts = new ArrayList<Account>();
accounts.add(new BankAccount(1, 1, 10000));
并且从不关心实现类型:)
答案 2 :(得分:1)
您可以添加以下代码,以帮助您入门:
public class ConcreteAccount extends Account{
public ConcreteAccount (int accountId, int customerId, double balance) {
super(accountId, customerId, balance);
}
public abstract double deposit(double sum) {
//implementation here
}
public abstract double withdraw(double sum) {
//implementation here
}
}
然后,你可以:
Account ac= new ConcreteAccount(1,100,25000);
ArrayList<Account> acList= new ArrayList<Account>();
acList.add(ac);
答案 3 :(得分:0)
标记类抽象意味着它可能具有未实现的方法,因此,由于未定义的行为,您无法直接创建抽象类的实例。你可以做的是定义一个非抽象类,它扩展你的Account
类并在Account
中实现两个抽象方法。像class BankAccount extends Account { implementations }
这样的东西。之后,您可以创建类BankAccount
的实例并将其添加到ArrayList
实例中。扩展Account
的其他类实例也可以添加到ArrayList
实例中。