[Java] 인터페이스와 다형성
2025. 10. 15. 19:27ㆍDev./Java
728x90
반응형
인터페이스
인터페이스란 "이 클래스는 이러한 기능들을 반드시 가지고 있어야 해" 라는 규칙을 정해놓은 설명서 같은 개념이다. 클래스가 반드시 구현해야하는 메서드의 목록만 담겨있다.
public interface RemoteControl {
void turnOn();
void turnOff();
}
public class TV implements RemoteControl {
public void turnOn() {
System.out.println("TV를 켭니다");
}
public void turnOff() {
System.out.println("TV를 끕니다");
}
}
리모콘의 경우로 예시를 살펴보면 켜기/끄기 기능은 꼭 있어야 한다는 약속을 정한 것이다.
- implements : 클래스가 그 인터페이스를 구현한다는 의미
- 규칙 : 인터페이스에 적힌 모든 메서드 반드시 구현해야 하며 그렇지 않을 경우 오류 발생
인터페이스 사용 목적
- 표준화된 규칙 제공
- 다형성
- 서로 다른 클래스를 같은 타입으로 다룰 수 있다
RemoteControl r1 = new TV();
RemoteControl r2 = new Radio();
r1.turnOn(); // TV 켜기
r2.turnOn(); // 라디오 켜기
- 유연한 코드 확장
- 새로운 클래스 생성해도 인터페이스만 따르면 기존 코드 수정 최소화 가능
다형성
다형성이란 같은 타입으로 다른 객체들을 다르게 동작시키는 것
같은 코드 (remote.turnOn())을 써도 실제 실행되는 동작은 객체의 종류에 따라 달라진다.
public class Main {
public static void main(String[] args) {
RemoteControl r1 = new TV();
RemoteControl r2 = new Radio();
r1.turnOn(); // TV를 켭니다
r2.turnOn(); // 라디오를 켭니다
}
}
RemoteControl r1 = new TV(); r1은 RemoteControl 타입으로 선언되었지만 실제 객체는 TV
r1.turnOn(); 컴파일 시점엔 “RemoteControl에 turnOn()이 있나?”만 확인 → 있음
실행 시점에 실제 객체의 메서드가 호출 되는 것을 동적 바인딩(dynamic binding) 이라고 하며 이러한 특성을 다형성 이라고 한다.
요약
인터페이스는 “행동의 규칙(약속)”을 정의하고,
다형성은 “그 약속을 여러 클래스가 다르게 구현해도 같은 타입으로 다룰 수 있게 해주는 것”이다.
728x90
반응형
'Dev. > Java' 카테고리의 다른 글
| [Java] Stack(스택) 자료구조 (0) | 2025.10.17 |
|---|---|
| [Java] 캡슐화 (0) | 2025.10.16 |
| [Java] 타입 변환 (Array ↔ Array/List/String) (0) | 2025.10.14 |
| [Java] Java 메서드(Method) 와 객체화 (0) | 2025.10.14 |
| [Java] HashSet (0) | 2025.10.10 |