【发布时间】:2019-11-23 10:36:07
【问题描述】:
我目前正在尝试学习 Java,但遇到了一个我有点卡住的问题。
我有一个超类和两个扩展它的子类,在超类中我创建了一个 Arraylist,我想在子类的构造函数中使用它,但我不太确定我的解决方案。
我很乐意为您提供任何帮助,如果您需要任何进一步的信息来理解我的问题,请告诉我。
所以这是我尝试过的:
public class Superclass{
private String something;
private ArrayList<String> list;
public Superclass(String something){
this.something = something;
list = new ArrayList<String>();
}
}
public class Subclass extends Superclass{
public String someelse;
public Subclass(String name, ArrayList<String> list, String
someelse){
super(name);
this.someelse = someelse;
list = new ArrayList<String>
}
}
它没有出现任何错误,但这样做是正确的方法,还是有办法将 ArrayList 放在超级括号中? 我想将它初始化为超类,在子类中添加元素并在不同的类中使用它。
【问题讨论】:
-
如果你想访问子类中的列表,它必须声明为非
private(所以要么protected要么public或包默认)然后你需要初始化它只在超级 -
此代码不是有效的 Java 代码。所以它不可能编译。所以不,这不是做你想做的事的正确方法(不管那可能是什么)。
-
如果你已经在超类ctor中这样做了,为什么还要在子类ctor中为
list分配一个空的ArrayList? -
所以你是说我可以在超类中将其设置为受保护,然后只在那里初始化它,而不是在两者中都初始化两次?
标签: java arraylist constructor subclass superclass