gpt4 book ai didi

java - 为什么 protected 方法不可见?

转载 作者:行者123 更新时间:2023-12-02 22:53:12 25 4
gpt4 key购买 nike

Java 专家,如果您有任何见解,我将不胜感激!

我的包中有一个带有 protected 方法的抽象类。我在同一个包中还有这个类的子类。现在,当我尝试从包外部的类实例化子类,并在子类实例上调用 protected 方法时,Eclipse 提示 protected 方法不可见。

我认为, protected 方法将对所有子类可见 - 包内或包外 - 只要类可见性不限制它 - 在这种情况下,父类和子类都是公共(public)的。我缺少什么?提前致谢!

package X;
public abstract class Transformation {
protected OutputSet genOutputSet (List list) {
..
}
}


package X;
public class LookupTransformation extends Transformation {
}


package Y;
import X.*;
public class Test {
public static void main(String[] args) {
List<field> fld_list = new ArrayList();
..
LookupTransformation lkpCDC = new LookupTransformation();
OutputSet o = lkpCDC.genOutputSet(fld_list); // Eclipse errors out here saying genOutputSet from the Type Transformation is not visible. WWWWWWWWHHHHHAAAATTTTTT????
}
}


最佳答案

protected 访问意味着genOutputSet可以由从声明它的类继承的类或属于同一包的类调用。这意味着您可以从 LookupTransformation 中调用它。

但是,您尝试从位于不同包中的不相关类 - Test 调用它,这需要 public 访问权限。

查看附加说明here .

关于java - 为什么 protected 方法不可见?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25334004/

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