Java/자바 정리

68. 인터페이스와 다형성 – 구현 객체를 바꿔도 유지되는 구조

코딩하는냥이 2025. 5. 8. 12:33
반응형

이번 글에서는 자바의 인터페이스(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를 켭니다.

💡 포인트 정리

  • 터페이스기능 명세만 정의하고, 객체는 별도로 구현
  • 인터페이스를 통해 다양한 객체를 하나의 타입으로 다룰 수 있음
  • 인터페이스는 다중 구현이 가능, 유지보수에 유리한 구조
  • 개발 시 코드를 유연하게 설계하고 교체가 쉬움

📌 정리하자면,
인터페이스는 "이 객체가 어떤 기능을 제공하는가"에 집중하여 설계하고, 다형성을 적극적으로 활용할 수 있게 해줍니다.