我一直在阅读Bruce Eckel的Thinking in Java,当访问Access Control一章时,它说如果一个java文件有两个或更多类,除了公共类,其他类不能是private
(这会使除了班级之外的任何人都无法访问)或protected
。
但是我看到很多流行的java库和开源项目确实用private来装饰这些类。
这是因为这本书过于理论化还是其他原因?
原文(第231页,第4版)
请注意,类不能是私有的(除了类之外的任何人都无法访问)或受保护。因此,您只有两种选择:包访问或公共访问。如果你不希望任何其他人访问该类,你可以使所有构造函数都是私有的,从而防止除了你之外的任何人,在类的静态成员中,形成一个该类的对象。
答案 0 :(得分:3)
该语句仅适用于顶级(非嵌套)类。嵌套类可能是private
。这是因为顶级类可以看到私有嵌套类(包括嵌套类的私有成员),反之亦然。它们也可能是protected
,意味着封闭类的子类,即使在另一个包中,也可以引用它们。
请注意,这对于声明多个顶级类的Java文件来说并不是唯一的。 <{1}}和private
不允许在任何顶级类声明中使用。