与我的另一个问题略有相关:以下内容有什么区别:
private class Joe
protected class Joe
public class Joe
class Joe
再一次,最后两个之间的区别是我最感兴趣的。
与我的另一个问题略有相关:以下内容有什么区别:
private class Joe
protected class Joe
public class Joe
class Joe
再一次,最后两个之间的区别是我最感兴趣的。
任何包中的类都可以访问公共类。
具有默认访问权限 ( class Joe
) 的类仅对同一包中的其他类可见。
private 和 protected 修饰符只能应用于内部类。
私有类仅对其封闭类和同一封闭类中的其他内部类可见。
受保护的类对同一包中的其他类以及扩展封闭类的类可见。
有关更多信息,请参阅JLS。
具有默认访问权限的类在声明中前面没有修饰符。
默认访问是包级别的访问,因为具有默认访问权限的类只能被同一个包中的类看到。
如果一个类具有默认访问权限,则另一个包中的类将无法创建该类的实例,甚至无法声明变量或返回类型。编译器会抱怨。例如:
package humanity;
class Person {}
package family;
import humanity.Person;
class Child extends Person {}
尝试编译这 2 个源。如您所见,它们位于不同的包中,编译将失败。