我正在阅读Java文档here,这就是我发现的:
您还可以在最开始添加修饰符,例如 public 或 private ,这样您就可以看到类声明的开头行变得非常复杂。修饰符 public 和 private ,用于确定其他类可以访问的内容
MyClass
,本课程稍后将对此进行讨论。
它指定我可以使用private
或public
修饰符创建一个类。但是,当我尝试使用private
修饰符时,我收到一个错误,即它是该类别带的非法修饰符:仅允许public
,abstract
和final
我理解private
修饰符没用,但为什么这个来自官方Java站点的教程声明我可以使用它创建一个类?我错过了什么吗?
答案 0 :(得分:15)
顶级课程不能是private
。但是,嵌套类可以是private
。
请参阅JLS
访问修饰符public(第6.6节)仅适用于顶级类 (§7.6)和成员类(§8.5),而不是本地类(§14.3)或 匿名课程(§15.9.5)。
受保护的访问修饰符和私有(第6.6节)仅适用于 直接封闭类或枚举声明中的成员类 (第8.5节)。
答案 1 :(得分:3)
您不能拥有private
顶级课程。您可以拥有private
内部或嵌套类。
显然,private
顶级课程会有些无用,因为你不允许从任何地方访问它。
所以这是允许的
public class MyClass {
private class MyInnerClass {
}
}
答案 2 :(得分:1)
这不是一个错误;仔细看看措辞:
你也可以在最开始时添加修饰符 ,如 公开或私有-...
您可以为常规类提供公开和默认(包私有,无修饰词)。嵌套的也可以是私有的或被检测到的。
答案 3 :(得分:1)
“”“该类的非法修饰符;只允许使用public,abstract和amp。final。”“”
顶级课程不能私有
当您尝试使用私有类的名称命名文件时。
您不能对文件和私有类使用相同的名称..
类名和文件名是相同的,如果且只有类不是私有的,..
如果该类是公开的,那么文件名和类名应该相同。
如果有很多公共类,则文件名应该是公共类名。
答案 4 :(得分:0)
您可以拥有一个私有内部类,因此它适用。
答案 5 :(得分:0)
您可以将它们用于内部课程。我怀疑你试图将它用于顶级课程。 Here's an example of using private classes
答案 6 :(得分:0)
.java文件中的主要类不能是私有的(它将是一个无关的文件,因为它是私有的,毕竟它将如何使用)但是你可以拥有主类使用的内部类。这个文件可以是私有的。
例如
public class OuterClass{
//constructors and methods of OuterClass
private class InnerClass{
//constructors and methods of InnerClass
}
}
答案 7 :(得分:0)
允许使用私有类,但仅限于内部类或嵌套类。
答案 8 :(得分:0)
private
:
public class A {
private B b;
private class B {} // Only class A can use this class
}
答案 9 :(得分:0)
您可以将内部类视为私有。
以下是完全有效的。
public class Foo
{
private class Bar
{
}
}