具有比同类产品更广泛的访问级别的Java构造(Java constructor having bro

2019-06-24 07:44发布

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