如何在派生类构造函数中使用变量名初始化数组?

时间:2018-04-02 17:23:20

标签: java constructor interface derived

所以这是一个班级:

public class Palya {
    Mezo[][] m;

    public Palya(Mezo[][] m){
        this.m = m;
}

它来自:

public class PalyaTeszt extends Palya{

    public PalyaTeszt(Mezo[][] m) {
        super(new Mezo[][]  {
                {new Szikla(),    new Szikla(),     new Viz(),        new Szikla(),     new Szikla(),     new Preri(true)},
                {new Szikla(),    new Szikla(),     new Preri(false), new Preri(false), new Preri(false), new Szikla()},
                {new Szikla(),    new Szikla(),     new Preri(false), new Preri(false), new Szikla(),     new Szikla()},
                {new Szikla(),    new Szikla(),     new Preri(false), new Szikla(),     new Viz(),        new Preri(false)},
                {new Szikla(),    new Szikla(),     new Preri(false), new Szikla(),     new Viz(),        new Szikla()},
                {new Preri(true), new Preri(false), new Preri(false), new Preri(false), new Preri(false), new Preri(false)}
        });
    }
}

在派生的构造函数中,数组是用另一个名为Mezo的类初始化的,这个Mezo [] [] m类有我想要访问的方法,但没有名称,比如m.getSomething() 。 如何以我可以使用Mezo方法的方式进行初始化? 如果Palya只是一个界面会更好吗? Palya的意思是像国际象棋棋盘这样的6x6领域,仅用于不同的目的。 我想要6种不同的Palya。

1 个答案:

答案 0 :(得分:1)

问题是您没有为类m中的Palya字段设置访问级别修饰符,它应如下所示:

public class Palya {
    protected Mezo[][] m; // Note protected keyword

    public Palya(Mezo[][] m){
        this.m = m;
}

如果没有证明修饰符,则默认允许只访问该类和同一包的成员。

有关Java中访问修饰符的更多信息 - official docs