【发布时间】:2013-01-02 11:28:54
【问题描述】:
我想从提供此受保护方法的类的子类中调用另一个实例的受保护方法。请参见以下示例:
public class Nano {
protected void computeSize() {
}
}
public class NanoContainer extends Nano {
protected ArrayList<Nano> children;
}
public class SomeOtherNode extends NanoContainer {
// {Nano} Overrides
protected void computeSize() {
for (Nano child: children) {
child.computeSize(); // << computeSize() has protected access in nanolay.Nano
}
}
}
javac 告诉我computeSize() has protected access in Nano。我看不出这是什么原因(我以为我已经在其他代码中这样做了)。我想保持这种方法受到保护,我该怎么办?
javac version "1.7.0_09"
编辑
我想提供一个精简的版本,但我没有想到这些类位于不同的包中。
nanolay.Node
nanolay.NanoContainer
nanogui.SomeOtherNode
【问题讨论】:
-
你能不能也显示这些类所在的包?
-
啊,包裹.. 没想到。我想提供一个精简版的代码。我已经编辑了问题。
-
您能否在问题标题中添加软件包限定条件,因为这似乎是相关的?
-
@MiserableVariable:这可以吗?我还将
instance-methods替换为packages标签。 -
是的,这很好。顺便说一句,接受的答案需要一些更正。
标签: java subclass packages protected access-modifiers