gpt4 book ai didi

java - 为什么java不让我调用这个 protected 函数

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

假设以下类结构:

命名空间a内

public abstract class A {

protected int someVal;
protected abstract int action();

}

在命名空间 a.b 中

public class B extends A{

//magically filled with elements ;)
List<A> elements;

protected int action(){
someVal = 42; // OK
int l = 0;
for (A a : elements){
l+= a.action(); //FORBIDDEN!!
}
return l;
}
}

所以 Eclipse 建议我

Change the visibility of 'action' to 'protected'

我感觉自己被愚弄了。

为什么我可以执行操作,但不能调用它?我访问 someVal 也没有问题。

我很清楚将 B 复制到同一个命名空间中,但我有许多扩展 B 或类似的 C 和 D 等的类,并且喜欢按顺序排列它们。

或者重新表述我的问题:这个数据包“东西”是强制我的类具有 protected 方法但对客户端代码隐藏该方法的唯一方法吗?

最佳答案

从静态类型的角度来看,a 可能不是 B 的实例。您不能触及非后代类的 protected (除非通过相同的包退出)。 protected 应该很少使用(如果有的话)。

关于java - 为什么java不让我调用这个 protected 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14410629/

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