【发布时间】:2018-05-04 20:30:58
【问题描述】:
我很难理解为什么我在以下代码中出现错误,而在其他情况下却没有:
场景 1(有错误)
class App{
public static void main(String[]args) {
ClassA a = new ClassB();
a.print();
}
}
class ClassA {
protected void print() {}
}
class ClassB extends ClassA {
void print(){}
//creates error: Cannot reduce the visibility of the inherited method from ClassA
}
场景 2(无错误)
class App{
public static void main(String[]args) {
ClassA a = new ClassB();
a.print();
}
}
class ClassA {
protected void print() {}
}
class ClassB extends ClassA {
protected void print(){}
//no error/ Override method
}
非常感谢任何帮助。
【问题讨论】:
-
私有包的可见性低于
protected,这就是编译器暗示你的,你可以通过省略protected来降低可见性,这是不允许的。
标签: java access-modifiers