【发布时间】:2021-01-08 21:05:53
【问题描述】:
我有一个abstract class Element:
public abstract class Element{
String nom;
int prix;
// constructor
public Element(String n, int p) {
this.nom = n;
this.prix = p;
}
//getters
public String getNom() {
return nom;
}
public int getPrix() {
return prix;
}
}
我有一个subclass Bag,它从class Element 扩展而来,其特征在于它的重量(poids)和颜色(couleur)。但是Bag 也包含一个对象列表(对于对象类)。
所以我想做的是在我的subclass Bag 中创建一个arrayList<superclass>,以便能够编写代码来表示这些对象:一个苹果(一个苹果的价格:7 红宝石)、一个香蕉( price = 5 rubies)和一条 Fish(price = 20 rubies),也可以在袋子中添加或移除物品。
我的问题是:
如何将继承的变量分配给我的“Bag”子类的对象arraylist objectsInBag?
我正在使用 question 中的代码,如果我尝试的方法很好,应该如何创建子类的构造函数,包括 arrayList objectsInBag?
我到目前为止的代码:
import java.util.ArrayList;
public class Bag extends Element{
// atributtes propres a Bag
private String couleur;
private Integer poids;
ArrayList<Object[]> objectsInBag = new ArrayList<>();
// constructor
public Bag(String n, Integer p, String couleur, Integer poids ) {
super(n, p);
this.couleur = couleur;
this.poids = poids;
}
// adding object into the bag
public void addObjects(String n, Integer p){
objectsInBag.add(new Object[]{getNom(), getPrix()});
}
// getters and setters
public String getCouleur(){
return this.couleur;
}
public void setCouleur(String couleur){
this.couleur = couleur;
}
public Integer getPoids(){
return this.poids;
}
public void setPoids(Integer poids){
this.poids = poids;
}
【问题讨论】:
-
为什么要把 Object[] 放在 ArrayList 中?
-
另外,为什么超类必须是抽象的?它没有任何抽象方法。
-
我不能修改抽象类(这是练习的规则)...我正在使用 Object[] 因为它允许为 arrayList 设置多个参数,因为我旨在获取类型为 [ {banana: 5} , {apple: 7} , {fish: 20}] 的 arrayList,然后能够在 arrayList 中添加或删除元素
标签: java inheritance arraylist