Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Có bao nhiêu loại anonymous inner class được định nghĩa trong Java?


Một anonymous inner class là một inner class được khai báo không có tên class nào cả. Nói cách khác, một inner class vô danh được gọi là anonymous inner class. Vì nó không có tên, nó không thể có constructor vì chúng ta biết tên constructor trùng với tên class.

Chúng ta có thể định nghĩa một anonymous inner class và tạo đối tượng của nó bằng toán tử new cùng một lúc trong một bước.

Cú pháp

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

Các loại Anonymous Inner Class trong Java

  • Anonymous inner class extends một class
  • Anonymous inner class implements một interface
  • Anonymous inner class làm tham số

Anonymous inner class extends một class

Ở đây từ khóa new được dùng để tạo đối tượng của anonymous inner class có tham chiếu kiểu parent class.

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(); 
    } 
}

Kết quả

Turbo Engine V2 Engine


Anonymous inner class implements một interface

Ở đây từ khóa new được dùng để tạo đối tượng của anonymous inner class có tham chiếu kiểu interface.

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()); 
    } 
}

Kết quả

Software Developed in Java AnonymousClassDemo1$1


Anonymous inner class làm tham số

Chúng ta có thể dùng anonymous inner class làm tham số để nó có thể được truyền cho phương thức hoặc constructor.

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

Kết quả

Turbo Engine