Java/자바 정리

73. 인터페이스 다중 구현 – 하나의 객체, 여러 타입으로 제어

코딩하는냥이 2025. 5. 9. 11:12
반응형

이번 글에서는 하나의 클래스가 두 개 이상의 인터페이스를 동시에 구현하고,
각 인터페이스 타입으로 분리하여 다형성 있게 사용하는 방법을 학습합니다.


📦 인터페이스 1 – 리모콘 (RemoteControl.java)

package ch08.sec08;

public interface RemoteControl {
	void turnOn();
	void turnOff();
}

📦 인터페이스 2 – 검색 기능 (Searchable.java)

package ch08.sec08;

public class SmartTelevision implements RemoteControl, Searchable {
	public void turnOn() {
		System.out.println("TV를 켭니다.");
	}

	public void turnOff() {
		System.out.println("TV를 끕니다.");
	}

	public void search(String url) {
		System.out.println(url + "을 검색합니다.");
	}
}

✔ SmartTelevision은 RemoteControl과 Searchable을 동시에 구현


📌 실행 클래스 (MultiInterfaceImplExample.java)

package ch08.sec08;

public class MultiInterfaceImplExample {
	public static void main(String[] args) {
		RemoteControl rc = new SmartTelevision();
		rc.turnOn();
		rc.turnOff();

		Searchable searchable = new SmartTelevision();
		searchable.search("https://www.youtube.com");
	}
}

💬 코드 설명

  • SmartTelevision은 두 개의 인터페이스를 구현하고 있음
  • 인터페이스 타입에 따라 필요한 기능만 사용할 수 있음
    • RemoteControl rc → 전원 기능만 사용 가능
    • Searchable searchable → 검색 기능만 사용 가능
  • 필요하면 SmartTelevision 타입으로 캐스팅하여 모든 기능 사용 가능

📌 간단 정리

인터페이스 타입 접근 가능 메서드
RemoteControl turnOn(), turnOff()
Searchable search(String)
SmartTelevision 모두 사용 가능

💡 포인트 정리

  • 자바는 다중 클래스 상속은 불가, 다중 인터페이스 구현은 가능
  • 구현 클래스는 각 인터페이스의 모든 추상 메서드 구현 필수
  • 인터페이스 타입 변수는 해당 인터페이스의 기능만 사용 가능
  • 다형성과 모듈화된 구조 설계에 유리

📌 정리하자면,
하나의 클래스가 여러 인터페이스를 구현하면,
기능을 역할 단위로 분리하고 유연하게 활용할 수 있는 구조를 만들 수 있습니다.