Call protected method from a subclass of another instance of different packages(从不同包的另一个实例的子类调用受保护的方法)
问题描述
我想从提供此受保护方法的类的子类中调用另一个实例的受保护方法.请参阅以下示例:
I want to invoke a protected method of another instance from within a subclass of the class providing this protected method. See the following example:
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() 在 Nano 中具有受保护的访问权限.我看不出这是什么原因(我以为我已经在其他代码中这样做了).我想保持这种方法受到保护,我该怎么办?
javac tells me that computeSize() has protected access in Nano. I can't see the reason for this (I thought I was already doing this in some other code). I'd like to keep this method being protected, what can I do?
javac version "1.7.0_09"
编辑
我想提供一个精简的版本,但我没有想到这些类位于不同的包中.
Edit
I wanted to provide a stripped down version, but I didn't think about the fact, that the classes lie in different packages.
nanolay.Node
nanolay.NanoContainer
nanogui.SomeOtherNode
推荐答案
您可以通过子类化和覆盖来访问受保护的方法;当它们在同一个包中可用时.我会补充一些细节.您可以在此处阅读详细信息.
You could access the protected methods either by subclassing and overriding; also when they are available in the same package. I will add some details. You can read details here.
您的示例位于 java 中 Object 类中可用的 protected clone() 方法的行上;您不能直接在任何对象上调用它(尽管所有对象都隐式地从 Object 类扩展).
The example that you have is on lines of the protected clone() method available in the Object class in java; you cannot directly call it on any object (although all object implicitly extend from the Object class).
这篇关于从不同包的另一个实例的子类调用受保护的方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:从不同包的另一个实例的子类调用受保护的方法
基础教程推荐
- Java 实例变量在两个语句中声明和初始化 2022-01-01
- 不推荐使用 Api 注释的描述 2022-01-01
- Java Swing计时器未清除 2022-01-01
- 在 Java 中创建日期的正确方法是什么? 2022-01-01
- 验证是否调用了所有 getter 方法 2022-01-01
- 多个组件的复杂布局 2022-01-01
- 如何在 Spring @Value 注解中正确指定默认值? 2022-01-01
- 如何在 JFrame 中覆盖 windowsClosing 事件 2022-01-01
- 大摇大摆的枚举 2022-01-01
- 从 python 访问 JVM 2022-01-01
