参见英文答案 >
java access modifiers and overriding methods 7个
我收到了这个编译错误:
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()方法,它是公共的,并被私有的子类TestClass覆盖.现在编译器抛出了我无法降低可见性的错误.从技术上说,每当我创建一个TestClass对象分配给类型父对象时,由于func()方法被覆盖,TestClass的func()将始终被调用,那么为什么我们应该关注可见性呢?这个错误背后的原因是什么?有人能解释清楚吗?