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

Có bao nhiêu loại lớp bên trong ẩn danh được định nghĩa trong Java?

Một lớp bên trong ẩn danh là một lớp bên trong được khai báo không có bất kỳ tên lớp nào ở tất cả. Nói cách khác, lớp bên trong không tên được gọi là lớp bên trong ẩn danh . Vì nó không có tên nên nó không thể có hàm tạo bởi vì chúng tôi biết rằng tên phương thức khởi tạo giống với tên lớp.

Chúng tôi có thể xác định một lớp bên trong ẩn danh và tạo đối tượng của nó bằng cách sử dụng mới đồng thời trong một bước.

Cú pháp

new(argument-list){
   // Anonymous class body
}

Các loại lớp bên trong ẩn danh trong Java

  • Lớp bên trong ẩn danh mở rộng một lớp
  • Lớp bên trong ẩn danh triển khai giao diện
  • Lớp bên trong ẩn danh làm đối số

Lớp bên trong ẩn danh mở rộng một lớp

Đây là một mới từ khóa được sử dụng để tạo một đối tượng của lớp bên trong ẩn danh có một tham chiếu của loại lớp cha.

Ví dụ

class Car {
   public void engineType() {
      System.out.println("Turbo Engine");
   }
}
public class AnonymousClassDemo {
   public static void main(String args[]) {
      Car c1 = new Car();
      c1.engineType();
      Car c2 = new Car() {
         @Override
         public void engineType() {
            System.out.println("V2 Engine");
         }
      };
      c2.engineType();
   }
}

Đầu ra

Turbo Engine
V2 Engine


Lớp bên trong ẩn danh triển khai giao diện

Đây là một mới từ khóa được sử dụng để tạo một đối tượng của lớp bên trong ẩn danh tham chiếu về loại giao diện.

Ví dụ

interface Software {
   public void develop();
}
public class AnonymousClassDemo1 {
   public static void main(String args[]) {
      Software s = new Software() {
         @Override
         public void develop() {
            System.out.println("Software Developed in Java");
         }
      };
      s.develop();
      System.out.println(s.getClass().getName());
   }
}

Đầu ra

Software Developed in Java
AnonymousClassDemo1$1


Lớp bên trong ẩn danh làm đối số

Chúng tôi có thể sử dụng lớp bên trong ẩn danh dưới dạng một đối số để nó có thể được chuyển cho các phương thức hoặc hàm tạo.

Ví dụ

abstract class Engine {
   public abstract void engineType();
}
class Vehicle {
   public void transport(Engine e) {
      e.engineType();
   }
}
public class AnonymousInnerClassDemo2 {
   public static void main(String args[]) {
      Vehicle v = new Vehicle();
      v.transport(new Engine() {
         @Override
         public void engineType() {
            System.out.println("Turbo Engine");
         }
      });
   }
}

Đầu ra

Turbo Engine