Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java 중첩 인터페이스(Nested Interface) 개념과 사용법 총정리

Java 중첩 인터페이스란?

Java에서는 인터페이스 내부에 또 다른 인터페이스를 선언하거나, 클래스 내부에 인터페이스를 선언할 수 있습니다. 이렇게 다른 타입 안에 선언된 인터페이스를 중첩 인터페이스(Nested Interface)라고 부릅니다.

중첩 인터페이스는 특정 클래스나 인터페이스와 밀접하게 연관된 기능 계약을 그룹화하고 싶을 때 유용합니다. 예를 들어, 외부 클래스의 기능 중 일부만 구현 대상으로 노출하고 싶은 경우에 활용됩니다.

중첩 인터페이스의 규칙

중첩 인터페이스를 사용할 때는 다음 세 가지 규칙을 기억해야 합니다.

  • 인터페이스 내부에 선언된 중첩 인터페이스는 반드시 public이어야 합니다. 인터페이스의 멤버는 암묵적으로 public이기 때문입니다.
  • 클래스 내부에 선언된 중첩 인터페이스public, protected, private, 패키지 접근 수준 등 어떤 접근 제어자든 자유롭게 지정할 수 있습니다.
  • 중첩 인터페이스는 별도로 표기하지 않아도 기본적으로 static으로 취급됩니다. 따라서 외부 클래스의 인스턴스 없이 독립적으로 구현할 수 있습니다.

예제 코드

다음은 클래스 내부에 중첩 인터페이스를 선언하고 이를 구현하는 예제입니다. 주목할 점은 구현 클래스가 인터페이스 이름을 Animal.Activity처럼 외부 클래스 이름 뒤에 점(.)을 붙여 참조한다는 것입니다.

class Animal {
    interface Activity {
        void move();
    }
}
class Dog implements Animal.Activity {
    public void move() {
        System.out.println("Dogs can walk and run");
    }
}
public class Tester {
    public static void main(String args[]) {
        Dog dog = new Dog();
        dog.move();
    }
}

실행 결과

Dogs can walk and run

핵심 정리

  • 중첩 인터페이스는 관련된 기능을 논리적으로 묶어주는 역할을 하며, 코드의 응집도를 높여줍니다.
  • 인터페이스 안에 선언하면 무조건 public이 되지만, 클래스 안에 선언하면 접근 범위를 세밀하게 제어할 수 있습니다.
  • static이 기본 적용되므로 외부클래스명.인터페이스명 형태로 참조하여 구현하면 됩니다.