반응형
이번 글에서는 자바의 인터페이스(interface)를 이용해
다형성을 구현하는 방법을 학습합니다.
구현 객체를 바꾸더라도 동일한 타입으로 제어할 수 있는 구조를 통해
코드의 유연성과 확장성을 높이는 설계를 체험합니다.
📦 인터페이스 (RemoteControl.java)
package ch08.sec02;
public interface RemoteControl {
public void turnOn(); // 추상 메서드
}
✔ interface로 선언된 타입은
✔ 모든 메서드가 자동으로 public abstract (본문 없음)
📦 구현 클래스 - TV (Television.java)
package ch08.sec02;
public class Television implements RemoteControl {
public void turnOn() {
System.out.println("TV를 켭니다.");
}
}
📦 구현 클래스 - 오디오 (Audio.java)
package ch08.sec02;
public class Audio implements RemoteControl {
public void turnOn() {
System.out.println("Audio를 켭니다.");
}
}
📌 실행 클래스 (RemoteControlExample.java)
package ch08.sec02;
public class RemoteControlExample {
public static void main(String[] args) {
RemoteControl rc = new Television();
rc.turnOn(); // TV를 켭니다.
rc = new Audio();
rc.turnOn(); // Audio를 켭니다.
}
}
💻 실행 결과
TV를 켭니다.
Audio를 켭니다.
💬 코드 설명
- RemoteControl은 인터페이스 → 기능의 틀(규칙)만 정의
- Television, Audio는 RemoteControl을 implements 하여 기능 구현
- 실행 클래스에서는 RemoteControl 인터페이스 변수로
구현 객체를 교체하며 동일한 메서드(turnOn()) 실행
📌 간단 정리
타입 | 메서드 동작 결과 |
Television() | TV를 켭니다. |
Audio() | Audio를 켭니다. |
💡 포인트 정리
- 터페이스는 기능 명세만 정의하고, 객체는 별도로 구현
- 인터페이스를 통해 다양한 객체를 하나의 타입으로 다룰 수 있음
- 인터페이스는 다중 구현이 가능, 유지보수에 유리한 구조
- 개발 시 코드를 유연하게 설계하고 교체가 쉬움
📌 정리하자면,
인터페이스는 "이 객체가 어떤 기능을 제공하는가"에 집중하여 설계하고, 다형성을 적극적으로 활용할 수 있게 해줍니다.
'Java > 자바 정리' 카테고리의 다른 글
71. static 메서드 – 인터페이스 자체에서 실행하는 유틸 기능 (0) | 2025.05.08 |
---|---|
70. default 메서드 – 인터페이스 안에 기본 기능 구현하기 (0) | 2025.05.08 |
69. 인터페이스 상수와 메서드 구현 – 공통 규칙으로 기능 통일하기 (0) | 2025.05.08 |
67. 추상 메서드와 다형성 – 자식이 반드시 구현해야 하는 기능 (1) | 2025.05.08 |
66. 추상 클래스(Abstract Class) - 직접 생성 불가, 공통 기능 정의 (0) | 2025.05.08 |
65. 매개변수의 다형성 – 하나의 메서드로 여러 객체 동작시키기 (0) | 2025.05.08 |