方法继承方法的知名度,我得到这个编译器错误:不能减少从父
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()将始终被调用,那么为什么我们应该关注可见性?这个错误背后的原因是什么?有人能解释清楚吗?
谢谢Bohemain。我明白了理由。感谢您指出命名标准。 – Mojoy 2012-01-27 19:16:43
嗨..这让我想到为什么我不能在超类中公开的方法在子类中保护修饰符?由于受保护的修饰符可以在任何包的包和子类中访问! – Mojoy 2012-01-28 13:40:47
受保护的方法对其他任意类都不可见,但super的'public'方法是,所以同样的推理适用。 *任何*可见度降低都是错误的。 – Bohemian 2012-01-28 19:21:14