Java规范允许具有默认访问权的类具有其构造函数的公共访问权限,它的目的是什么,因为它不能在其包之外引用?
答案 0 :(得分:4)
我想将此作为评论,但由于评论中不允许使用代码标记....
关于你对CristopheDs回答的评论:
package bob;
class MySuperHiddenClass {
public MySuperHiddenClass() {
System.out.println("bob");
}
}
和
package bob;
public class MyPublicClass extends MySuperHiddenClass {
}
MyPublicClass中没有声明构造函数,但您仍然可以从任何包中调用新的MyPublicClass。
答案 1 :(得分:2)
如果你问为什么你可以拥有public
构造函数:这是因为你可以在扩展基类时明确地(或隐含地)调用它们。
答案 2 :(得分:0)
类可见性决定了外部世界如何创建类的实例。因此,包私有类只能在声明它们的包中实例化。方法可见性(包括构造函数)确定已经实例化的实例如何在其类定义之外使用。
如果您使用私有/受保护的construtor声明包私有类,您将如何从同一个包中的另一个类实例化它?
两件事: 类可见性 - 确定如何在定义包之外创建实例。 方法可见性(包括构造函数) - 确定如何控制对成员的访问,而不管包的可见性。