This question already has answers here:
What is the difference between public, protected, package-private and private in Java?
                            
                                (28个答案)
                            
                    
                2年前关闭。
        

    

所以这是一个类:

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。

最佳答案

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

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

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


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

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

08-19 00:14