我们可以在一个Java程序中声明多个类吗?

一个Java程序包含两个或多个类,在Java中有两种可能。

在单个Java程序中实现多个类的两种方法

  • 嵌套类

  • 多个非嵌套类

编译器如何处理多个非嵌套类

在下面的示例中,java程序包含两个类,一个类名为Computer,另一个是Laptop。这两个类都有自己的构造函数和方法。在main方法中,我们可以创建两个类的对象并调用它们的方法。

示例

public class Computer {
   Computer() {
      System.out.println("Computer类的构造函数。");
   }
   void computer_method() {
      System.out.println("Power gone! Shut down your PC soon...");
   }
   public static void main(String[] args) {
      Computer c = new Computer();
      Laptop l = new Laptop();
      c.computer_method();
      l.laptop_method();
   }
}
class Laptop {
   Laptop() {
      System.out.println("笔记本电脑类的构造函数。");
   }
   void laptop_method() {
      System.out.println("99% Battery available.");
   }
}

当我们编译上述程序时,将创建两个.class文件,分别是Computer.class和Laptop.class。这样的好处是我们可以在其他项目中的某个地方重用我们的.class文件,而无需再次编译代码。简而言之,创建的.class文件数将等于代码中的类数。我们可以根据需要创建任意多个类,但是不建议在一个文件中编写多个类,因为这样会使代码难以阅读,而我们可以为每个类创建一个文件。

输出结果

Computer类的构造函数。
笔记本电脑类的构造函数。
Power gone! Shut down your PC soon...
99% Battery available.

编译器如何处理嵌套类

编译具有多个内部类的主类后,编译器会为每个内部类生成单独的.class文件。

示例

// Main class
public class Main {
   class Test1 { // Inner class Test1
   }
   class Test2 { // Inner class Test2
   }
   public static void main(String [] args) {
      new Object() { // Anonymous inner class 1
      };
      new Object() { // Anonymous inner class 2
      };
      System.out.println("Welcome to nhooo.com");
   }
}

在上面的程序中,我们有一个Main类,其中有四个内部类Test1,Test2,Anonymous内部类1Anonymous内部类2。编译完此类后,它将生成以下类文件。

主类

Main $Test1.class

Main $Test2.class

Main $1.class 

Main $2.class

输出结果

Welcome to nhooo.com