- SmartTelevision 클래스는 RemoteControl, Searchable 두 인터페이스를 동시에 구현
- 인터페이스 타입에 따라 기능을 다르게 사용할 수 있음
RemoteControl rc = new SmartTelevision();
rc.turnOn();
rc.turnOff();
Searchable searchable = new SmartTelevision();
searchable.search("https://...");
- 인터페이스는 다른 인터페이스를 여러 개 상속 가능
- 하위 인터페이스를 구현하면 상위 인터페이스 메서드도 함께 구현해야 함
public interface InterfaceC extends InterfaceA, InterfaceB {
void methodC();
}
- 인터페이스 타입 변수에 다양한 구현 클래스 객체를 대입 가능
- 자식 클래스 객체를 부모 인터페이스 타입으로 자동 변환
A a = new B(); // OK
a = new C(); // OK
a = new D(); // OK
a = new E(); // OK
- 인터페이스로 참조된 객체를 다시 원래 구현 클래스로 변환 가능
Vehicle vehicle = new Bus(); // 자동 타입 변환
Bus bus = (Bus) vehicle; // 강제 타입 변환
bus.checkFare(); // Bus 고유 메서드 호출 가능
- Car 클래스가 Tire 타입 필드로 HankookTire 또는 KumhoTire를 대입해 다르게 동작
car.tire1 = new HankookTire();
car.tire2 = new KumhoTire();
car.run();
- Vehicle 인터페이스를 구현한 Bus, Texi를 Driver 클래스에 전달
Driver driver = new Driver();
driver.drive(new Bus());
driver.drive(new Texi());
📌 18일차 핵심 요약
항목 |
설명 |
다중 인터페이스 구현 |
하나의 클래스가 여러 인터페이스를 동시에 구현 가능 |
인터페이스 상속 |
인터페이스는 다른 인터페이스들을 다중 상속 가능 |
타입 변환 |
인터페이스 ↔ 구현 클래스 간 변환 가능 (자동 & 강제) |
다형성 활용 |
필드, 매개변수, 변수에 다양한 구현체 대입하여 유연한 코드 구현 |
실행 시점 결정 |
오버라이딩된 실제 객체의 메서드가 실행됨 |