이너 인터페이스
이너 클래스와 마찬가지로 인터페이스를 클래스 내부에 정의하는 것은 해당 클래스에 의존적인
기능을 수행할 때다.
이너 인터페이스는 사용자 인터페이스의 이벤트 처리에 가장 많이 사용된다.
이너 인터페이스의 정의와 특징
이너 인터페이스의 특징 중 하나는 정적 이너 인터페이스만 존재할 수 있다는 것이다.
만약 이너 인터페이스 앞에 static 제어자를 생략하면 컴파일러가 자동으로 추가해 준다.
class A{
static interface B{
void bcd();
}
}
이너 인터페이스도 인터페이스므로 자체적으로 객체를 생성할 수 없다.
객체를 생성하기 위해서는 해당 인터페이스를 상속한 자식 클래스를 생성한 후 생성자를 이용해 객체를 생성하거나 익명 이너 클래스를 활용해 객체를 생성해야 한다.
즉, 일반적인 인터페이스 객체를 생성하는 방법과 동일하며, 유일한 차이점은 인터페이스가 클래스 내부에 존재하므로 객체의 타입을 "아우터클래스명.이너 인터페이스명"과 같이 사용해야 한다는 것이다.
인터페이스 구현 클래스 생성 및 객체 생성
class C implements A.B{
public void bcd();
}
C c = new C();
c.bcd();
익명 이너 클래스 사용
A.B a = new A.B(){ //static 이너 클래스일 때와 동일
public void bcd() {}
};
a.bcd();
이너 인터페이스의 2가지 객체 생성 방법
class A{
interface B{
public abstract void bcd();
}
}
class C implements A.B{
public void bcd(){
System.out.println("이너 인터페이스 구현 클래스 생성");
}
}
public class CreateObjectOfInterInterface {
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(){
@Override
public void bcd() {
System.out.println("익명 이너 클래스로 객체 생성");
}
};
b.bcd();
}
}
'Language > Java' 카테고리의 다른 글
[Java] 리소스 자동 해제 예외 처리 (0) | 2022.04.04 |
---|---|
[Java] 예외 처리 (0) | 2022.04.04 |
[Java] 인터페이스 타입의 입력 매개변수 전달 (0) | 2022.04.03 |
[Java] 익명 클래스, 익명 이너 클래스 (0) | 2022.04.03 |
[Java] Interface(인터페이스) VS Abstract Class(추상 클래스) 차이점, 정리 (0) | 2022.04.03 |