Java构造函数具有比其类更广泛的访问级别

时间:2012-05-11 07:34:20

标签: java constructor access-modifiers

Java规范允许具有默认访问权的类具有其构造函数的公共访问权限,它的目的是什么,因为它不能在其包之外引用?

3 个答案:

答案 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声明包私有类,您将如何从同一个包中的另一个类实例化它?

两件事: 类可见性 - 确定如何在定义包之外创建实例。 方法可见性(包括构造函数) - 确定如何控制对成员的访问,而不管包的可见性。