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 | 모두 사용 가능 |
💡 포인트 정리
- 자바는 다중 클래스 상속은 불가, 다중 인터페이스 구현은 가능
- 구현 클래스는 각 인터페이스의 모든 추상 메서드 구현 필수
- 인터페이스 타입 변수는 해당 인터페이스의 기능만 사용 가능
- 다형성과 모듈화된 구조 설계에 유리
📌 정리하자면,
하나의 클래스가 여러 인터페이스를 구현하면,
기능을 역할 단위로 분리하고 유연하게 활용할 수 있는 구조를 만들 수 있습니다.