我是JAVA / Android编程的新手并且遇到一个小问题。
我在Superclass中创建了一个数组,并希望在多个子类中初始化它。但是当我尝试初始化它时,它说它不可能。
我的代码:
public abstract class Fragen {
String[] Deutsch;
String[] Slowakisch;
static int Anzahl;
Random random;
int randNumber;
byte Fächer;
public String displayQuestion()
{
//TODO Fach abfragen
randNumber = random.nextInt(Anzahl);
return Slowakisch[randNumber];
}
public boolean correctAnswer(String answer)
{
//TODO Fächer +/-
if(answer.equals(Deutsch[randNumber]))
return true;
else
return false;
}
}
(超类)
public class Lektion1 extends Fragen
{
private Lektion1()
{
super();
Anzahl = 60;
//Deutsch = new String[];
Deutsch = {"",""};
Slowakisch = {"",""};
}
}
(子类)
亲切的问候 托马斯
答案 0 :(得分:1)
试试这个:
public class Lektion1 extends Fragen
{
private Lektion1()
{
super();
Anzahl = 60;
//Deutsch = new String[];
Deutsch = new String[]{"", ""};
Slowakisch = new String[]{"", ""};
}
}
答案 1 :(得分:0)
只需在超类中创建一个构造函数并在那里初始化该数组:
public abstract class Fragen {
...
public Fragen() {
Deutsch = new String[];
}
...
}
<强> 替代 强>
或者如果您的字段具有适当的访问修饰符,那么您也可以使用super
关键字
public abstract class Fragen {
public String[] Deutsch;
...
...
}
并在基类中:
public class Lektion1 extends Fragen {
private Lektion1()
{
super();
Anzahl = 60;
super.Deutsch = new String[];
Deutsch = {"",""};
Slowakisch = {"",""};
}
}
答案 2 :(得分:-1)
编辑:为了回答你的具体问题,@ MrQuattro的答案当然是正确和充实的。
那就是说,如果你想了解更多面向对象的设计,我仍然喜欢我原来答案中的想法。你当然可以扔掉或者按照自己的意愿使用:我建议将德语和斯洛伐克语保持在一起会更方便,所以我会让一个班级Frage
来保持一个单词(或短语)或表达式)两种语言。
接下来我想在Fragen
中创建一个接受所有Frage
个对象的构造函数,例如varargs(你应该了解这些)。这将允许Lektion1
构造函数仅包含
super(new Frage("", ""), new Frage("", ""), new Frage("", ""));
Fragen
可以计算,因此您不需要:超类构造函数会将anzahl
(请使用小写a
表示变量)设置为收到的问题数。< / p>
如果您想更进一步,Frage
课程也可以负责检查答案是否正确。