我对此非常困惑。任何人都可以清楚我为什么不允许我放置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(); }
}
}
答案 0 :(得分:1)
方法m1
是protected
,因此可以跨包到子类访问它。
因此,B
的实例将能够调用或@Override
m1
。
不是main
static
方法,即使属于类B
:范围也不同。
您可以在m1
中公开A
,也可以在B
的实例中调用它(例如在构造函数中等)。
您可以同时覆盖A
中m1
的{{1}},并减少访问限制,从而在此实例中将其设为B
:然后,您可以在public
方法的B
实例上访问它,就像您尝试的那样。
答案 1 :(得分:0)
您可以访问A
中B
中声明的受保护成员,但仅限于B
的实例或B
的子类。看看这个answer