【发布时间】:2018-07-15 09:46:16
【问题描述】:
父类
package p1;
public class A {
protected void display() {
System.out.println("Displayed");
}
}
子类(在另一个包中)
package p2;
import p1.A;
public class B extends A {
public static void main(String[] args) {
A a = new B();
a.display();
}
}
在子类中,如果我写B a = new B(),它可以正常工作并显示“已显示”。
但是,上面写A a = new B()的子类中的代码,它会抛出编译时错误'display()' has protected access in 'p1.A'
我现在对受保护的访问修饰符感到困惑,因为当引用类型是父级时它是如何工作的?
【问题讨论】:
-
您在静态方法中,而不是在 B 的方法中...在 B 中使用
foo()进行测试 ;-)
标签: java access-modifiers