在Java中,每个源文件(.java文件)只能有一个公共(public)类,且该类的名称必须与文件名相匹配。 这意味着只能有一个类被声明为public
,而其他类则不能被声明为public
。
例如,如果文件名为Example.java
,则该文件中只能有一个公共类,并且该类必须使用public
修饰符进行声明,如下所示:
// Example.javapublic class Example {// 公共类的内容
}// 非公共类(可以有多个)
class AnotherClass {// 非公共类的内容
}
但是,非公共类可以存在于同一个源文件中,并且可以有多个非公共类。这些非公共类在同一个文件中可以被其他类使用,但不能从其他文件中访问。
需要注意的是,这里所说的类是指 顶级类(top-level class),即直接声明在文件中的类。内部类(inner class) 不受此限制,可以在同一个文件中声明多个公共内部类或非公共内部类。
下面是一个示例,展示了如何在Example.java
文件中声明多个公共内部类和非公共内部类:
// Example.javapublic class Example {// 公共内部类public class PublicInnerClass {// 公共内部类的内容}// 非公共内部类class NonPublicInnerClass {// 非公共内部类的内容}// 公共静态内部类public static class PublicStaticInnerClass {// 公共静态内部类的内容}// 非公共静态内部类static class NonPublicStaticInnerClass {// 非公共静态内部类的内容}// 主类的内容
}
需要注意的是,内部类的访问修饰符可以是public
、protected
、private
或默认访问(即不使用任何访问修饰符)。如果内部类声明为public
,则可以从其他文件中访问;如果内部类声明为protected
、private
或默认访问,则只能在同一文件中访问。
总结:在同一个源文件中允许声明多个内部类,但只能有一个公共类。