[Java] 중첩 인터페이스

Bam·2024년 3월 7일
0

Java

목록 보기
47/98
post-thumbnail

중첩 인터페이스

중첩 인터페이스는 한 클래스의 내부에서 인터페이스를 선언한 것을 의미합니다. 중첩 클래스와 마찬가지로 한 클래스와 인터페이스가 긴밀한 관계를 가지면 따로 선언하는 것보다 중첩 인터페이스로 선언하는 것이 사용하기도, 관리하기도 편리하기 때문입니다.

class A {
	interface B {}
}

중첩 인터페이스의 접근 제어자는public, private가 올 수 있습니다.

  • public: 어디에서나 접근 가능.
  • default: 같은 패키지에서만 접근 가능.
  • private: 선언된 클래스 내부에서만 접근 가능.

마찬가지로 static 제어자도 붙일 수 있습니다. static 제어자를 사용하면 외부 클래스 객체를 생성하지 않아도 중첩 인터페이스를 사용할 수 있게 됩니다.

public class A {
    public interface B {	//중첩 인터페이스 선언
        void sayHi();	//추상 메소드
    }

    private B b;	//인터페이스 타입 멤버 변수

    public void createB(B b) {	//중첩 인터페이스 구현 객체를 파라미터로 받음
        this.b = b;
    }

    public void callSayHi() {
        this.b.sayHi();
    }
}
public class Main {
    public static void main(String[] args) {
        A a = new A();

        class CallInnerInterface implements A.B {	//중첩 인터페이스 구현 객체
            @Override
            public void sayHi() {
                System.out.println("Hi");
            }
        }

        a.createB(new CallInnerInterface());
        a.callSayHi();
    }
}

구현이 조금 복잡할 수도 있는데 중첩 인터페이스의 용도가 주로 UI 프로그래밍에서 이벤트 처리에 사용되기 때문입니다.

0개의 댓글