为什么受保护的方法不可见?

Bi *_*Act 4 java

Java专家,我真诚地感谢任何见解!

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

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

package X;
public abstract class Transformation {
  protected OutputSet genOutputSet (List list) {
    ..
  }
}
Run Code Online (Sandbox Code Playgroud)


package X;
public class LookupTransformation extends Transformation {
}
Run Code Online (Sandbox Code Playgroud)


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????
  }
}
Run Code Online (Sandbox Code Playgroud)


Era*_*ran 6

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

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

请参阅此处的附加说明。