Java 报错:多个类是公共的

在 Java 编程中,当我们创建类时,可能会遇到一个常见的编译错误,即“多个类是公共的”。这个错误通常发生在一个 Java 文件中定义了多个公共类(public class)。根据 Java 的规定,一个源文件最多只能有一个公共类,且该类的名称必须与文件名一致。

错误示例

假设我们有如下代码,文件名为 MyClasses.java

// MyClasses.java

public class FirstClass {
    public void display() {
        System.out.println("Hello from FirstClass");
    }
}

public class SecondClass {
    public void display() {
        System.out.println("Hello from SecondClass");
    }
}

当我们编译这段代码时,Java 编译器将会报错,提示“多个类是公共的”。这是因为在同一个文件中定义了两个公共类:FirstClassSecondClass。要解决这个问题,我们需要将其中一个类移动到另一个 Java 文件中。

解决方案

最简单的解决办法是将每个公共类放到一个单独的文件中。例如,我们可以将 FirstClassSecondClass 分别放在 FirstClass.javaSecondClass.java 两个文件中。

FirstClass.java

// FirstClass.java

public class FirstClass {
    public void display() {
        System.out.println("Hello from FirstClass");
    }
}

SecondClass.java

// SecondClass.java

public class SecondClass {
    public void display() {
        System.out.println("Hello from SecondClass");
    }
}

现在,我们的代码就没有问题了,编译器也不会再报错了。

状态图

下面是一个状态图,展示了在遇到“多个类是公共的”错误后,程序的状态变化:

stateDiagram
    [*] --> 编写代码
    编写代码 --> 编译代码
    编译代码 --> 错误状态: "多个类是公共的"
    错误状态 --> 修复代码
    修复代码 --> 编译代码
    编译代码 --> 正常状态: "编译成功"

在上面的状态图中,程序从编写代码开始,经过编译代码阶段,如果检测到错误,就会进入错误状态,之后需要修复代码,再次编译以达到正常状态。

序列图

以下是一个序列图,展示了编译以及处理错误的流程:

sequenceDiagram
    participant Developer
    participant Compiler
    participant Error

    Developer->>Compiler: 编写代码
    Compiler->>Developer: 编译代码
    Compiler-->>Error: 报错 "多个类是公共的"
    Error-->>Developer: 请求修复代码
    Developer->>Compiler: 修复代码
    Compiler->>Developer: 编译成功

在这个序列图中,开发者首先编写代码并请求编译,编译器发现错误后通知开发者。开发者随后修复代码并再次请求编译,最终成功完成编译。

结论

在 Java 编程中,确保每个公共类都在自己的文件中是一个基本的好习惯。避免“多个类是公共的”的错误不仅可以提高代码的可维护性,还可以避免不必要的编译问题。理解并遵循这些基本规则将帮助开发者更有效地进行 Java 开发,从而减少错误,提高工作效率。