一个 Java 文件中可以包含多个类,但有一些限制和规则需要遵守。以下是详细说明:
1. 规则
- 一个文件中只能有一个
public
类:- 如果文件中包含
public
类,则该类必须与文件名同名。 - 例如,如果文件名为
MyClass.java
,则public
类必须命名为MyClass
。
- 如果文件中包含
- 可以有多个非
public
类:- 非
public
类(即默认访问权限的类)可以有多个,且它们的名称不需要与文件名一致。
- 非
- 内部类和匿名类:
- 内部类和匿名类可以存在于同一个文件中,且不受上述规则限制。
2. 示例
以下是一个 Java 文件中包含多个类的示例:
// 文件名:MyClass.java
public class MyClass {
public void display() {
System.out.println("This is the public class.");
}
}
// 非 public 类
class AnotherClass {
public void show() {
System.out.println("This is another class.");
}
}
// 另一个非 public 类
class YetAnotherClass {
public void print() {
System.out.println("This is yet another class.");
}
}
3. 编译后的结果
- 每个类都会生成一个独立的
.class
文件。 - 例如,上述代码会生成以下文件:
MyClass.class
AnotherClass.class
YetAnotherClass.class
4. 使用场景
- 辅助类:
如果某些类只被主类使用,可以将它们放在同一个文件中,以减少文件数量。 - 测试类:
在测试代码中,可以将测试类和被测试类放在同一个文件中。 - 内部类:
内部类通常与外部类放在同一个文件中。
5. 注意事项
- 可读性:
如果一个文件包含太多类,可能会降低代码的可读性。建议将逻辑相关的类放在同一个文件中。 - 访问权限:
非public
类只能在同一个包内访问。 - 文件名:
如果文件中有public
类,文件名必须与public
类的名称一致。
6. 内部类的示例
内部类可以放在同一个文件中,且不受 public
类规则的限制。
// 文件名:OuterClass.java
public class OuterClass {
private int value = 10;
// 内部类
class InnerClass {
public void display() {
System.out.println("Value: " + value);
}
}
}
// 另一个非 public 类
class AnotherClass {
public void show() {
System.out.println("This is another class.");
}
}
7. 总结
- 一个 Java 文件中可以包含多个类,但只能有一个
public
类,且public
类必须与文件名同名。 - 非
public
类可以有多个,且它们的名称不需要与文件名一致。 - 每个类都会生成一个独立的
.class
文件。 - 内部类和匿名类可以放在同一个文件中,且不受上述规则限制。