```markdown
在Java中,一个源文件(.java
文件)通常包含一个或多个类定义。虽然Java中允许在同一个源文件中定义多个类,但有一些限制和规定需要了解,特别是当这些类不是内部类时。
在Java中,每个源文件的名称必须与其中的公共类(public
class)相同。例如,如果源文件名为MyClass.java
,其中的公共类必须声明为public class MyClass
。这个规则适用于每个Java源文件。
Java允许在同一个源文件中定义多个类。每个类都可以拥有自己的类体,并且这些类可以是公共类(public
)或默认访问级别的类(没有修饰符)。然而,有几个关键的限制和规则。
一个Java源文件中只能有一个public
类,并且这个public
类的类名必须与源文件的文件名一致。例如,MyClass.java
中可以有public class MyClass
,但不能有public class AnotherClass
。
在源文件中定义的非public
类可以没有访问修饰符,它们将具有包级访问权限(默认访问级别)。这种类只能在同一包中访问。
在一个源文件中定义的多个类是相互独立的,除非它们有特定的关系(如继承或实现接口)。一个类不能直接访问另一个类中的私有成员(private
),但可以访问protected
、public
或默认访问级别的成员。
如果类不是public
类,则可以将它们命名为任何合法的类名,不必与源文件名匹配。例如,MyClass.java
中可以有一个public class MyClass
和一个非public
类AnotherClass
,这两者之间的命名没有冲突。
需要特别注意的是,内部类(包括成员内部类、静态内部类、局部内部类等)与普通类有所不同。内部类的定义可以在外部类中嵌套,并且它们的访问规则与普通类有一些不同。然而,普通类在源文件中的定义是独立的,不依赖于其他类的定义。
尽管Java允许在同一源文件中定义多个类,但在实际应用中,通常推荐将每个类放置在单独的文件中,尤其是当这些类较为复杂时。这样可以提高代码的可读性和维护性,避免一个文件过于庞大和混乱。
public
类。public
类的名称必须与源文件名一致。public
类可以没有访问修饰符,并具有包级访问权限。