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