gpt4 book ai didi

Java - 为什么 protected 对这个函数不起作用

转载 作者:行者123 更新时间:2023-11-29 04:00:06 26 4
gpt4 key购买 nike

package portale.interfaccia;
public class PageIndex extends FlowPanel {
protected Integer prova;

private PageCenter center;
public PageIndex() {
this.center=new PageCenter();
this.add(center);
}
}

package portale.interfaccia;
public class PageCenter extends FlowPanel {
public PageCenter() {
super.prova=2;
}
}

为什么,如果 prova 受到保护,我无法使用 super 访问它?干杯

最佳答案

PageCenter 扩展自 FlowPanel,而不是 PageIndex。看起来 FlowPanel 没有名为 prova

的属性

如果您希望 PageCenter 使用 super 关键字从 PageIndex 访问 protected 属性,那么您应该从 PageIndex< 扩展.

public class PageCenter extends PageIndex{

public PageCenter(){
prova = 2;
}
}

如果您希望这两个类都从 FlowPanel 扩展,请尝试重构您的代码,以便 PageIndexPageCenter 知道一些实用程序类。

public class ProvaUtility{

private Integer prova;

public Integer getProva(){}

public void setProva(Integer p){}
}

然后你可以像这样使用它:

public class PageIndex extends FlowPanel{

private ProvaUtility utility;

private PageCenter center;

public PageIndex(ProvaUtility pu){

this.utility = pu;
this.center = new PageCenter(pu);
this.add(this.center);
}

public Integer getProva(){
return this.utility.getProva();
}
}

public class PageCenter extends FlowPanel{

private ProvaUtility utility;

public PageCenter(ProvaUtility u){
this.utility = u;
this.utility.setProva(2);
}
}

如果传递此引用不适合您,请尝试使用 Singleton

class ProvaSingleton{

private static ProvaSingleton instance = null;

private Integer prova;

private ProvaSingleton(){
prova = 2;
}

public static ProvaSingleton getInstance(){

if (instance == null){
instance = new ProvaSingleton();
}
return instance;
}

public Integer getProva(){ return this.prova;}

public void setProva(Integer p){this.prova = p;}
}

然后调用它:

ProvaInstance.getInstance().getProva()

关于Java - 为什么 protected 对这个函数不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4149519/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com