Java规范允许与默认访问类有它的构造公共访问,什么是它的目的,因为它不能包外部引用?
Answer 1:
我想使这个评论,但因为没有代码的标签被允许在评论....
在关于对CristopheDs您的评论回答:
package bob;
class MySuperHiddenClass {
public MySuperHiddenClass() {
System.out.println("bob");
}
}
和
package bob;
public class MyPublicClass extends MySuperHiddenClass {
}
没有构造是在MyPublicClass声明,但你仍然可以从任何包调用新MyPublicClass。
Answer 2:
如果你问为什么你可以有public
的构造函数:那是因为你可以明确地举例(或隐含)叫他们时就扩展的基类。
Answer 3:
类可视性决定了外面的世界如何创建类的实例。 因此,包私有类只能声明它们的包内被实例化。 方法可见度(包括构造函数)确定如何实例,已经实例化可以在其类定义之外使用。
如果你声明包私有类,有私人/保护construtor,你将如何从另一个类在同一个包实例呢?
两件事情:类可视性 - 确定实例如何界定自己的包之外创建的。 方法可见性(包括构造) - 确定成员接入如何被控制,而不管包可见的。
文章来源: Java constructor having broader access level than its class