java - 继承属性访问

标签 java inheritance constructor

如何在构造函数之外访问 java 中的继承属性?

public PainelPrincipal(Jogo jogo,GridPanel gridPanelPrincipal) {
    super(jogo,gridPanelPrincipal);
    listaBlocos = new LinkedList<>();

    carregarFicheiroNivel();
    gridPanelPrincipal.setEventHandler(this);
}

private void carregarFicheiroNivel() {
    FileHandler handler = new FileHandler("/niveis/EstadoInicial.txt");
    String conteudo = handler.readFile();
    String[] colunas = null;

    int y=0;
    for(String linha: conteudo.split("\n")){
        colunas = linha.split(" ");
        for(int x = 0; x < colunas.length; x++) {
            if(colunas[x].substring(1, 2).equals(PAREDE)){
                grelha[x][y] = new Parede();
                gridPanelPrincipal.put(0, 0, grelha[0][0].getCellRepresentation());
            }else{
                switch(colunas[x].substring(0, 1)){
                    case "0":break;
                }
            }
        }
        y++;
    }
}

这行 gridPanelPrincipal.put(0, 0, grelha[0][0].getCellRepresentation()); 似乎不起作用,他不认识 gridPanelPrincipal 类构造函数之外的变量。

是否可以在构造函数之外访问它或者我该如何做到这一点?

最佳答案

您无法在构造函数外部访问它,因为它可能是私有(private)。您只能在构造函数中访问它,因为它是构造函数的参数。

您可以:

  1. 在父类(super class)中设置适当的变量protected,使其对子类可见,或者
  2. (有点笨拙)在子类中创建您自己的变量来存储它自己对 GridPanel 的引用,以便您可以通过其他方法访问它。

关于java - 继承属性访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23530286/

相关文章:

Java If 语句简写形式

python - 为什么 super().__init__ () 的行为与 Python 派生类中的 super().override() 不同?

c++ - 在 C++ 中什么时候进行存储分配?

java - 如何在 Cpanel 管理的服务器上安装 java?

java - Form.java 扩展了 JFrame

java - 如何将类文件添加到新的java项目

c++ - 在继承的虚函数中调用子类的方法?

objective-c - 从父类(super class)中调用子类的方法

c++ - 当我们开始覆盖内存时,对象的生命周期已经结束了吗?

constructor - Kotlin 构造函数 : primary and secondary