인터페이스 A와 인터페이스 B가 객체의 메서드를 호출할 수 있으려면 객체는 이 두 인터페이스를 모두 구현해야 한다.
public class 구현클래스명 implements 인터페이스A, 인터페이스B {
//인터페이스 A에 선언된 추상 메서드의 실체 메서드 선언
//인터페이스 B에 선언된 추상 메서드의 실체 메서드 선언
}
만약 실체 메서드가 하나라도 없으면 추상 클래스로 선언해야 한다.
예를들어 RemoteControl 인터페이스로 구현 객체인 Televistion과 Audio를 사용하려면
RemoteControl rc;
rc = new Televistion();
rc = new Audio();
RemoteControl의 변수 rc로 turnOn()
또는 turnOff()
메서드를 호출하면 구현 객체의 turnOn()
과 turnOff()
메서드가 자동 실행된다.
RemoteControle rc = new Television();
rc.turnOn();
rc.turnOff();
디폴트 메서드는 인터페이스-1 에서 정리했지만 다시 설명하자면 기존에 존재하던 인테페이스를 이용해 구현 클래스를 만들고 사용하고 있다고 가정할 때, 보완과정에서 추가적으로 존재해야할 메서드가 있다면 default 메서드를 사용한다.
물론 구현 클래스에서 재 정의할 수 있다.