<分区>
我遇到了这个编译器错误:
You cannot reduce the visibility of a inherited method.
我有以下代码
class Parent {
public void func() {
System.out.println("in Parent");
}
}
public class TestClass extends Parent {
public static void main(String args[]) {
parent obj=new TestClass();
obj.addTest();
}
private void func() {
System.out.println("in child");
}
}
这里父类有 func()
方法,它是公共(public)的,被私有(private)的子类 TestClass
覆盖。现在编译器抛出我无法降低可见性的错误。从技术上讲,每当我创建一个 TestClass
的对象并分配给类型父对象时,由于 func()
方法被覆盖,TestClass 的 func() 将被调用总是,那为什么我们要注意能见度呢?这个错误背后的原因是什么?有人能给我解释清楚吗?