我不确定为什么会出现以下情况
class Parent {
private void method1() {
System.out.println("Parent's method1()");
}
public void method2() {
System.out.println("Parent's method2()");
}
}
public class Child extends Parent {
public void method1() {
System.out.println("Child's method1()");
}
public static void main(String args[]) {
Parent p = new Child();
p.method2();
}
}
父可能是包私有,但不受保护。
具体而言,产生的错误是
此处不允许使用修饰符
哪些似乎表示这是一个访问权限问题 - 但我怀疑这可能是一个红色的鲱鱼。 Private
修饰符也会自然生成错误。
答案 0 :(得分:2)
在Java中,顶级类只能包私有和公共修饰符。
制作课程private
没有任何意义。如果没有人出于任何原因使用该类,那么为什么我们需要该类?
protected
访问修饰符意味着,只能在封闭类和任何子类中以及封闭类的包中的任何位置可见。没有人知道哪些类将成为受保护类的子类。所以,它也没有意义
但private和protected都可以(并经常)应用于嵌套类和接口,而不是顶级类和接口
答案 1 :(得分:1)
您不能将受保护的访问修饰符用于顶级类。
访问修饰符public(第6.6节)仅适用于顶级类(第7.6节)和成员类(第8.5节),不适用于本地类(第14.3节)或匿名类(第15.9.5节)。 p>
受保护的访问修饰符和私有(第6.6节)仅适用于 直接封闭类或枚举声明中的成员类 (第8.5节)。