访问受保护的成员

时间:2015-11-04 13:25:57

标签: java

我对此非常困惑。任何人都可以清楚我为什么不允许我放置n条评论的代码

package pack1;
public class A {
  protected void m1() {
    System.out.println("This is very imp point");
}


package pack2;
import pack1.A;
class B extends A {
  public static void main(String arg[]) {
    // A a1 = new A();
    //a1.m1();
    B b1 = new B();
    b1.m1();
    //A a2 = new B();
    //a2.m1(); }
  }
}

2 个答案:

答案 0 :(得分:1)

方法m1protected,因此可以跨包到子类访问它。

因此,B的实例将能够调用或@Override m1

不是main static方法,即使属于类B:范围也不同。

您可以在m1中公开A,也可以在B的实例中调用它(例如在构造函数中等)。

您可以同时覆盖Am1的{​​{1}},并减少访问限制,从而在此实例中将其设为B :然后,您可以在public方法的B实例上访问它,就像您尝试的那样。

答案 1 :(得分:0)

您可以访问AB中声明的受保护成员,但仅限于B的实例或B的子类。看看这个answer