자바 익명 내부 클래스

중첩 클래스에는 이름이 없습니다. 익명 내부 클래스라고 합니다.
익명 내부 클래스는 두 가지 방법으로 사용할 수 있습니다.

우선 목적을 위해

If the purpose of class is only to override method ex: purpose of creating B class to override fun1
in this case you don't need to create B class



class A{
    void fun1(){
        System.out.println("fun1 in A ");
    }
}
class B extends A{
    void fun1(){
        System.out.println("fun1 in B");
    }
}




public class Program1
{
    public static void main(String[] args) {
        // A a = new B();
        // a.fun1(); //fun1 in B

        A obj = new A(){
            void fun1() {
                System.out.println("Anonymous Overidden method ");
            }
            // can't create 
            // void fun2(){
            //     System.out.println("fun2 method ");
            // }
        };
        obj.fun1(); // Anonymous Overidden method 
    }    
}



인터페이스가 있는 익명 클래스

interface I1{
    void fun1();
}

class Implementor implements I1{
    public void fun1(){
        System.out.println("Implementation of fun1");
    }
}


if role of implementor class is only to implement I1 interface , so you can create anonymous inner class , you don't need to create implementor class



public class Program2 {
    public static void main(String[] args) {
        // Implementor i1 = new Implementor();
        // i1.fun1(); //Implementation of fun1

        I1 i = new I1(){
            public void fun1(){
                System.out.println("Anonymous implementation");
            }
        };
        i.fun1(); // Anonymous implementation
    }
}

좋은 웹페이지 즐겨찾기