错误:m1() has protected access in A
保护不能访问不同的包子类为什么?
当尝试使用超类引用变量(A obj=new B()
)
这是在包装的pkg1第一类;
package pkg1;
public class A {
protected void m1() {
System.out.println("protected method");
}
}
这是第二类,它是在另一个包pkg2中导入pkg1;
package pkg2;
import pkg1.A;
public class B extends A {
@Override
protected void m1() {
System.out.println("override m1");
}
public static void main(String ar[]) {
A obj=new B();
obj.m1();
}
}
你试图访问'obj.m1()'和'obj'是类型A'的'。所以... –
确实。请解释你为什么期望*工作。 (未来,请注意代码格式化,现在我已经解决了它,但之前它是一团糟)。 –
@denys Seguret,@ jon Skeet如果我不是worng java给出了动态方法的机制派遣,所以我想我可以通过使用类型A的参考变量来访问从A重写的m1()方法。 –