【发布时间】:2014-04-14 00:26:48
【问题描述】:
在以下代码中,Child 的构造函数将可见性从public 降低到private,这是允许的。继承的方法,例如test(),不能降低可见性。为什么 Java 会这样操作?
class Parent {
public Parent(){}
public void test()
{
System.out.print("parent test executed!");
}
}
class Child extends Parent{
private Child(){}
private void test(){
System.out.print("child test executed!");
}
}
【问题讨论】:
-
这个link 解释了为什么覆盖方法不能有更严格的访问(转到文本的中间)。答案讨论了以多态方式调用的方法。构造函数不是多态调用的,所以同样的原因不适用。
标签: java inheritance methods constructor access-modifiers