Anonymous class trong java

Anonymous class tương tự như local class ngoại trừ nó không có tên. Anonymous class sẽ hữu ích trong trường hợp cần tạo một instance từ một interface cụ thể.

Ví dụ Anonymous class

Chúng ta có một class Shape là một interface có hàm formulaArea(). Hàm printFormula() sẽ in ra các công thức tính diện tích của các hình RectangleCircle
Trong hàm printFormula() mình sẽ làm 2 class đại diện cho 2 hình là RectangleCircle trong đó Rectangle được viết theo local class và Circle sẽ viết theo anonymous class. Xem code dưới đây

public class Main {

    public interface Shape {
        void formulaArea();
    }

    public static void printFormula() {

        // Local class
        class Rectangle implements Shape {
            @Override
            public void formulaArea() {
                System.out.println("A * B");
            }
        }

        Rectangle rectangle = new Rectangle();
        rectangle.formulaArea();

        // --------------------------------------------------

        //Anonymous class
        Shape cricle = new Shape() {
            @Override
            public void formulaArea() {
                System.out.println("R * R * 3.14");
            }
        };

        cricle.formulaArea();
    }
    public static void main(String[] args) {
        printFormula();
    }
}

Chúng ta thấy đối với class Rectangle được viết theo local class thì chúng ta phải khởi tạo để có thể gọi tới hàm formulaArea(), nhưng đối với Circle viết theo Anonymous class cho phép ta khai báo và khởi tạo cùng lúc, chúng ta có thể gọi trực tiếp đến formulaArea() mà không cần khởi tạo.

Đặc điểm của Anonymous class

Giống như Local class, Anonymous class cũng có các đặc tính:

  • Truy cập các thành viên của lớp chứa nó.
  • Có thể truy cập được các thành viên final của block chứa nó.
  • Không thể khai báo các thành viên static.
  • Không thể khai báo một interface bên trong anonymous class.
  • Có thể chứa các biến static final.

Note:
Bạn không thể khai báo contructor bên trong Anonymous class.

Nguồn tham khảo

https://www.geeksforgeeks.org/anonymous-inner-class-java/

0 0 vote
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x