BACK/JAVA

[JAVA] 이너 인터페이스

연듀 2022. 7. 28. 20:07

 

 

 

인터페이스를 클래스 내부에 정의하는 것을 이너 인터페이스라고 한다.

해당 클래스에 의존적인 기능을 수행할 때 이너 인터페이스를 사용한다.

 

이너 인터페이스의 중요한 특징은 정적 이너 인터페이스만 존재할 수 있다는 것이다.

static 제어자를 생략하면 컴파일러가 자동으로 추가해준다.

 

 

class A{
    // ...
    static interface B{
        void bcd();
    }
}

 

 

인터페이스의 객체를 생성하려면 해당 인터페이스를 상속한 자식 클래스를 생성한 후 생성자를 이용하거나 익명 이너 클래스를 이용해 객체를 생성해야한다.

자체적으로는 객체를 생성할 수 없다.

 

이 때, 객체의 타입을 '아우터 클래스명.이너 인터페이스명' 과 같이 사용한다.

 

 

 

 

 

<이너 인터페이스의 2가지 객체 생성 방법>

class A{
    interface B{ // 이너 인터페이스는 자동으로 static 지정
        public abstract void bcd();
    }
}

class C implements A.B{
    public void bcd(){
        System.out.println("이너 인터페이스 구현 클래스 생성");
    }
}

public class Java {
    public static void main(String[] args) {

        // 1. 자식 클래스 직접 생성
        A.B ab = new C();
        C c = new C();
        c.bcd();

        // 2. 익명 이너 클래스 생성
        A.B b = new A.B(){
            public void bcd(){
                System.out.println("익명 이너 클래스로 객체 생성");
            }
        };
        b.bcd();
    }
}