Java 使用private指定类的访问控制

Java 使用private指定类的访问控制,java,class,private,protected,Java,Class,Private,Protected,最近我一直在读Bruce Eckel的《Java思考》,当谈到访问控制章节时,它说如果一个Java文件有两个或两个以上的类,除了公共类,其他类不能是私有的(这会使除类之外的任何人都无法访问)或受保护的 但是我看到很多流行的java库和开源项目确实使用私有来装饰这些类 那么,是因为这本书过于理论化还是其他原因 原文(第231页,第四版) 请注意,类不能是私有的(这将使除类之外的任何人都无法访问它)或受保护的。因此,类访问只有两种选择:包访问或公共访问。如果您不希望其他任何人访问该类,可以将所有构造

最近我一直在读Bruce Eckel的《Java思考》,当谈到访问控制章节时,它说如果一个Java文件有两个或两个以上的类,除了公共类,其他类不能是
私有的(这会使除类之外的任何人都无法访问)或
受保护的

但是我看到很多流行的java库和开源项目确实使用私有来装饰这些类

那么,是因为这本书过于理论化还是其他原因

原文(第231页,第四版)

请注意,类不能是私有的(这将使除类之外的任何人都无法访问它)或受保护的。因此,类访问只有两种选择:包访问或公共访问。如果您不希望其他任何人访问该类,可以将所有构造函数设置为私有,从而防止除您之外的任何人在该类的静态成员中创建该类的对象


该语句仅适用于顶级(非嵌套)类。嵌套类可以是
私有的
。这是因为顶级类可以看到私有嵌套类(包括嵌套类的私有成员),反之亦然。它们也可能受到
保护
,这意味着即使在另一个包中,封闭类的子类也可以引用它们


请注意,这不是声明多个顶级类的Java文件所独有的<代码>私有
和受保护
不允许出现在任何顶级类声明中。

该语句仅适用于顶级(非嵌套)类。嵌套类可以是
私有的
。这是因为顶级类可以看到私有嵌套类(包括嵌套类的私有成员),反之亦然。它们也可能受到
保护
,这意味着即使在另一个包中,封闭类的子类也可以引用它们


请注意,这不是声明多个顶级类的Java文件所独有的<代码>私有
和受保护不允许出现在任何顶级类声明中。

该语句仅适用于顶级(非嵌套)类。嵌套类可以是
私有的
。这是因为顶级类可以看到私有嵌套类(包括嵌套类的私有成员),反之亦然。它们也可能受到
保护
,这意味着即使在另一个包中,封闭类的子类也可以引用它们


请注意,这不是声明多个顶级类的Java文件所独有的<代码>私有和受保护不允许出现在任何顶级类声明中。

该语句仅适用于顶级(非嵌套)类。嵌套类可以是
私有的
。这是因为顶级类可以看到私有嵌套类(包括嵌套类的私有成员),反之亦然。它们也可能受到
保护
,这意味着即使在另一个包中,封闭类的子类也可以引用它们


请注意,这不是声明多个顶级类的Java文件所独有的<代码>私有和
受保护
在任何顶级类声明中都是不允许的。

我强烈怀疑你只是误读了这本书。我认为Commonware是对的,无论如何私有和受保护可以用于内部类(类内的类),但不能用于不在任何类内的类。这本书现在已经很旧了;你应该认为它已经过时了。与当前的Java相比,这一短文中有几个不准确之处。。。或受保护的。脚注文本:实际上,内部类可以是私有的,也可以是受保护的,但这是一个特例。这些将在第7章中介绍。我强烈怀疑你只是误读了这本书。我认为Commonware是正确的,不管怎样,私有和受保护可以用于内部类(类内的类),但不能用于不在任何类内的类。这本书现在已经很旧了;你应该认为它已经过时了。与当前的Java相比,这一短文中有几个不准确之处。。。或受保护的。脚注文本:实际上,内部类可以是私有的,也可以是受保护的,但这是一个特例。这些将在第7章中介绍。我强烈怀疑你只是误读了这本书。我认为Commonware是正确的,不管怎样,私有和受保护可以用于内部类(类内的类),但不能用于不在任何类内的类。这本书现在已经很旧了;你应该认为它已经过时了。与当前的Java相比,这一短文中有几个不准确之处。。。或受保护的。脚注文本:实际上,内部类可以是私有的,也可以是受保护的,但这是一个特例。这些将在第7章中介绍。我强烈怀疑你只是误读了这本书。我认为Commonware是正确的,不管怎样,私有和受保护可以用于内部类(类内的类),但不能用于不在任何类内的类。这本书现在已经很旧了;你应该认为它已经过时了。与当前的Java相比,这一短文中有几个不准确之处。。。或受保护的。脚注文本:实际上,内部类可以是私有的,也可以是受保护的,但这是一个特例。这些将在第7章中介绍