Computer >> Máy Tính >  >> Lập trình >> Java

Chúng ta có thể khai báo nhiều hơn một lớp trong một chương trình Java không?


Một chương trình Java duy nhất chứa hai hoặc nhiều lớp, có thể theo hai cách trong Java.

Hai cách triển khai nhiều lớp trong một chương trình Java duy nhất

  • Các lớp lồng nhau
  • Nhiều lớp không lồng nhau

Cách trình biên dịch hoạt động với Nhiều lớp không lồng nhau

Trong ví dụ dưới đây, chương trình java chứa hai lớp, một lớp có tên là Máy tính và lớp khác là Máy tính xách tay. Cả hai lớp đều có các hàm tạo và một phương thức riêng. Trong phương thức main, chúng ta có thể tạo một đối tượng của hai lớp và gọi các phương thức của chúng.

Ví dụ

public class Computer {
   Computer() {
      System.out.println("Constructor of Computer class.");
   }
   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("Constructor of Laptop class.");
   }
   void laptop_method() {
      System.out.println("99% Battery available.");
   }
}

Khi chúng tôi biên dịch chương trình trên, hai tệp .class sẽ được tạo là Computer.class và Laptop.class. Điều này có lợi thế là chúng ta có thể sử dụng lại tệp .class của mình ở đâu đó trong các dự án khác mà không cần biên dịch lại mã. Nói tóm lại, số lượng tệp .class được tạo sẽ bằng số lớp trong mã. Chúng ta có thể tạo bao nhiêu lớp tùy thích nhưng không nên viết nhiều lớp trong một tệp vì nó làm cho mã khó đọc thay vì chúng ta có thể tạo một tệp duy nhất cho mọi lớp.

Đầu ra

Constructor of Computer class.
Constructor of Laptop class.
Power gone! Shut down your PC soon...
99% Battery available.

Cách trình biên dịch hoạt động với các lớp lồng nhau

Khi lớp chính được biên dịch có nhiều lớp bên trong, trình biên dịch sẽ tạo các tệp .class riêng biệt cho từng lớp bên trong.

Ví dụ

// 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 Tutorials Point");
   }
}

Trong chương trình trên, chúng ta có một lớp Chính có bốn lớp bên trong Test1, Test2, Lớp bên trong ẩn danh 1 Lớp bên trong ẩn danh 2 . Khi chúng tôi biên dịch lớp này, nó sẽ tạo ra các tệp lớp sau.

Main.class

Chính $ Test1.class

Chính $ Test2.class

Lớp $ 1. chính

Lớp chính $ 2.

Đầu ra

Welcome to Tutorials Point