Sử dụng static class và anonymous class trong Java

Đây là bài 36/62 bài của series môn học Ngôn ngữ lập trình Java

1. Sử dụng static class trong Java

Trong Java, chúng ta có thể tạo một lớp bên trong một lớp khác. Lớp đó gọi là nested class. Có 2 loại nested class là: inner classstatic class. Chúng ta đã từng tìm hiểu về static class ở bài Sử dụng nested class và inner class trong Java. Các bạn có thể đọc lại nhé.

Các bạn lưu ý là chỉ một lớp nằm trong một lớp khác thì mới có thể khai báo với static. Nếu một lớp bình thường mà khai báo với static thì sẽ gây ra lỗi.

static class Animal {
 public static void displayInfo() {
   System.out.println("I am an animal");
 }
}

class Main {
 public static void main(String[] args) {
   Animal.displayInfo();
 }
}
Kết quả
java.lang.RuntimeException: Uncompilable source code - modifier static not allowed here

2. Anonymous class trong Java là gì?

Trong Java, một lớp có thể bao gồm một lớp khác thì đó là nested class. Một nested class không có tên thì được gọi là anonymous class. Ví dụ:

class outerClass {
    //định nghĩa một anonymous class
    object1 = new Type(parameterList) {
         //thân lớp của anonymous class
    };
}

Trong đó, Type có thể là:

  1. Một lớp cha mà anonymous class sẽ kế thừa với từ khóa extends
  2. Một interface mà anonymous class sẽ kế thừa với từ khóa implements

Lưu ý: Sau khi định nghĩa anonymous class thì có dấu chấm phẩy “;”. Bởi vì khi định nghĩa một anonymous class và gán nó cho một biến đối tượng thì giống như một câu lệnh.

Ví dụ:

class LopA {
    public void xuat() {
        System.out.println("Day la lop A.");
    }
}

class AnonymousDemo{
    public void createClass() {
      //tạo một anonymous class extends LopA
      LopA p1 = new LopA() {
         @Override
         public void xuat() {
            System.out.println("Day la anonymous class.");
         }
      };
      p1.xuat();
   }
}
class Main {
    public static void main(String[] args) {
       AnonymousDemo an = new AnonymousDemo();
       an.createClass();
    }
}
Kết quả
Day la anonymous class.

Trong ví dụ trên, lớp LopA được định nghĩa với hàm xuat(). Bên trong lớp AnonymousDemo có một anonymous class kế thừa LopA và được gán cho đối tượng p1. Lớp anonymous khi kế thừa LopA thì đã overriding hàm xuat() mà nó thừa kế được từ LopA.

Sự tiện lợi khi sử dụng anonymous class trong Java

Trong anonymous class, các đối tượng được tạo ra bất kỳ khi nào cần đến và chỉ thực hiện một nhiệm vụ nhất định nào đó là xong. Không cần định nghĩa một lớp riêng để chỉ tạo 1 đối tượng của lớp đó. Điều này cũng giúp code ngắn gọn. Ví dụ:

Object = new Example() {
   public void display() {
      System.out.println("Anonymous class overrides the method display().");
   }
};

Trong ví dụ trên, một đối tượng của lớp anonymous được tạo ra khi chúng ta cần ghi đè phương thức display().

3.7/5 - (3 bình chọn)
Bài trước và bài sau trong môn học<< Sử dụng nested class và inner class trong JavaXây dựng Singleton class trong Java >>
Chia sẻ trên mạng xã hội:

Trả lời

Lưu ý:

1) Vui lòng bình luận bằng tiếng Việt có dấu.

2) Khuyến khích sử dụng tên thật và địa chỉ email chính xác.

3) Mọi bình luận trái quy định sẽ bị xóa bỏ.