본문 바로가기

JAVA

JAVA ) 다중 인터페이스 선언과 익명구현 객체

클래스의 상속은 단일적으로 이루어지는 반면 인터페이스를 구현하는 객체는 다중적으로 인터페이스를 선언할 수 있다.

 

다중 인터페이스를 구현한 객체는 implements한 인터페이스들의 추상 메서드의 실체 메서드들을 구현해야 된다.

만일 implements 한 인터페이스의 추상메서드를 하나라도 구현하지 않는다면 에러가 발생한다.

추상 메소드를 선택적으로 선언하고 싶다면, 객체를 추상 클래스(abstract)로 선언해야 된다.

public class 구현 클래스명 implemnts 인터페이스 A, 인터페이스 B {
// 인터페이스 A에 선언된 추상메서드 실체 메소드 선언
// 인터페이스 B에 선언된 추상메소드 실체 메소드 선언

}

인터페이스의 자동 타입 변환을 사용한 선언 방식은 두 가지가 존재한다,  일반적으로 사용하는 [ 인터페이스 변수 = 구현 객체; ] 자동 타입 변환 방법과 다향성을 확보한 인터페이스 사용방법이 존재한다. 

* 구현 객체의 대입의 따라 실행값이 달라진다.
인터페이스 변수;
변수 = 구현객체 A
변수 = 구현객체A를 상속받은 자식객체B 

* 구현 객체를 상속받은 자식 객체또한 자동 타입 변환이 가능하다.

 

 

 

 

익명 구현 객체란?

인터페이스, 추상 클래스의 선언된 추상 메서드는 강제적으로 구현 메소드가 선언되어야 된다. 하지만 추상 메소드 하나때문에 구현 클래스를 만들고 구현 메소드 하나만 선언하는 건 비효율적일 수 있다, 그러한 문제를 해결하기 위해 java에서는 소스파일(구현 클래스)을 만들지 않고 구현 객체를 만들 수 있는 방법을 제공하는데 그것이 바로 익명 구현 객체라 한다.

 

<실행 클래스(ex main)>
인터페이스 변수 = new 인터페이스(){
// 인터페이스에 선언된 추상 메서드 실체 메서드 선언
// public void methodeName() { 실행문 }
};

* 인터페이스 객체를 사용하려면 new연산자 뒤에 객체 클래스가 아닌 인터페이스를 선언해야 된다.

* 실행부{...} 뒤에는 꼭 세미콜론 ; 을 사용해야 된다.