从Java中的其他包访问受保护

时间:2013-02-19 04:09:40

标签: java inheritance protected

为什么我不能调用protectedMethod()甚至类Parent的对象调用它的方法?

package packageA;

public class Parent{
  protected void protectedMethod(){
     System.out.println("Hello Parent");
  }
}

并在另一个包中:

package packageB;
import packageA.Parent;

Public Class Child extends Parent{
    public static void main(String[] args) {
        Parent parent = new Parent();
        parent.protectedMethod(); //illegal
        Child child = new Child();
        child.protectedMethod(); // legal       
    }
}

1 个答案:

答案 0 :(得分:1)

您的子类可以在它自己的父上调用protectedMethod(),而不是在任何创建的独立Parent对象上调用。

因此,super.protectedMethod()是合法的,但这似乎不是你需要的。如果要创建一个在Parent对象上调用方法的Child对象,而不是它自己的父对象,则必须将该方法声明为public。