인터페이스를 클래스 내부에 정의하는 것을 이너 인터페이스라고 한다.
해당 클래스에 의존적인 기능을 수행할 때 이너 인터페이스를 사용한다.
이너 인터페이스의 중요한 특징은 정적 이너 인터페이스만 존재할 수 있다는 것이다.
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();
}
}
'BACK > JAVA' 카테고리의 다른 글
[JAVA] 예외 : Checked Exception / UncheckedException (0) | 2022.08.01 |
---|---|
[JAVA] 이너 클래스(인스턴스, 정적, 지역) (0) | 2022.07.28 |
[JAVA] 인터페이스, 디폴트 메서드 (0) | 2022.07.28 |
[JAVA] charAt(i) -'0' 사용 이유 (0) | 2022.07.27 |
[JAVA] 인터페이스를 이용한 이벤트 처리 기능 (0) | 2022.07.21 |