Langauge/Java-basic

[Java] 이너 인터페이스(중첩 인터페이스)

강잇 2022. 8. 11. 22:12

이너 인터페이스(중첩 인터페이스)란

  • 이너 인터페이스클래스의 멤버로 선언된 인터페이스를 의미한다.
    • 해당 클래스와 긴밀한 관계를 맺는 구현 클래스를 만들기 위해서
// 이너 인터페이스 정의
class OuterClass {
    // 이너 인터페이스 생성
    static interface InnerInterface {
        public 리턴타입 메서드명();
    }
}

이너 인터페이스의 특징

  • 사용자 인터페이스(UI)의 이벤트 처리에 많이 사용된다.
  • 정적 이너 인터페이스만 존재할 수 있다.
    • static 제어자를 생략하면 컴파일러가 자동으로 추가한다.
  • 컴파일시 '아우터 클래스$이너 인터페이스.class' 형태로 .class파일이 생성된다.

이너 인터페이스 타입의 객체 생성

  • 객체 생성 방법으로는 구현한 하위 클래스를 이용한 방법과 익명 이너 클래스를 활용하는 방법이 있다.
    • 인터페이스는 자체적으로 객체를 생성할 수 없다.

이너 인터페이스를 구현한 클래스를 이용하여 객체 생성

// 이너 인터페이스를 구현한 클래스 생성
class InnerImpl implements OuterClass.InnerInterface {
    @Override
    public 리턴 타입 메서드명() {
        ...
    }
}
// 이너 인터페이스 타입의 객체 생성
OuterClass.InnerInterface innerImpl = new InnerImpl();

익명 이너 클래스를 이용하여 객체 생성

// 익명 이너 클래스를 이용하여 객체 생성
OuterClass.InnerInterface innerInterface = new OuterClass.InnerInterface() {
    @Override
    public 리턴 타입 메서드명 {
        // 기능 구현
    }
}