【发布时间】:2012-01-19 05:34:20
【问题描述】:
以下是我的ProtectedConstructor.java源代码:
package protectCon;
public class ProtectedConstructor{
public int nothing;
ProtectedConstructor(){
nothing = 0;
}
}
以下是UsingProtectedCon.java 来源:
package other;
import protectcon.ProtectedConstructor;
public class UsingProtectedCon extends ProtectedConstructor{ //**Line 4**
public static void main(String... a) {
}
}
当我编译 UsingProtectedCon.java 时,我在上面显示的第 4 行出现错误。它说 ProtectedConstructor() 不是 public ;所以不能在包外访问。
但是,由于我的课程是公开的,我不应该能够将它扩展到包之外。反正我没有创建它的任何实例。
现在,如果我将ProtectedConstructor 类的构造函数设置为public 或protected,那么代码可以正常编译,没有错误。
那么,为什么构造函数必须是public 或protected,而不仅仅是具有默认访问权限?
【问题讨论】:
标签: java inheritance constructor default access-modifiers