初始化子类中的超类数组(java)

时间:2016-09-01 14:23:44

标签: java android arrays oop

我是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 = {"",""};
    }
}

(子类)

亲切的问候 托马斯

3 个答案:

答案 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课程也可以负责检查答案是否正确。

链接: Anti-pattern: parallel collections