1. 다형성이란?
다형성이란
하나의 참조 변수로 여러 종류의 객체를 다루는 것의 의미
자바에서는 부모 타입 참조 변수로 자식 객체를 참조할 수 있는 것을 의미한다.
Burger b = new BulgogiBurger();
중요한 특징
- 부모 타입 → 자식 객체 참조 가능 (O)
- 자식 타입 → 부모 객체 참조 불가능 (X)
Burger b = new BulgogiBurger(); // 가능
BulgogiBurger b = new Burger(); // 불가능
왜 이런 구조일까?
자식 객체는 부모보다 기능이 더 많다.
Burger (부모)
├─ eat()
BulgogiBurger (자식)
├─ eat()
├─ grill()
그래서
- 기능을 “줄이는 것”은 가능 (OK)
- 없는 기능을 “늘리는 것처럼 쓰는 것”은 불가능 (X)
👉 부모 타입은 항상 “공통 기능만 보게” 된다
2. instanceof 연산자
instanceof는
객체가 어떤 타입인지 확인하는 연산자
다형성 상황에서 실제 객체를 구분할 때 사용한다.
void eat(Burger b) {
if (b instanceof BulgogiBurger) {
BulgogiBurger bb = (BulgogiBurger) b;
bb.grill();
} else if (b instanceof CheeseBurger) {
CheeseBurger cb = (CheeseBurger) b;
cb.meltCheese();
}
}
3. 다형성의 장점
1️⃣ 매개변수의 다형성
하나의 메서드로 여러 객체를 처리할 수 있다
void serve(Burger b) {
b.eat();
}
사용:
serve(new BulgogiBurger());
serve(new CheeseBurger());
serve(new ShrimpBurger());
💡 장점
- 버거 종류마다 메서드를 따로 만들 필요 없음
- 코드가 단순해지고 확장성이 좋아짐
2️⃣ 하나의 배열에 여러 객체 저장 가능
서로 다른 객체를 하나의 부모 타입 배열로 관리 가능
Burger[] burgers = new Burger[3];
burgers[0] = new BulgogiBurger();
burgers[1] = new CheeseBurger();
burgers[2] = new ShrimpBurger();
💡 사용 예시
for (Burger b : burgers) {
b.eat();
}
💡 장점
- 다양한 객체를 하나의 구조로 관리 가능
- 반복문으로 통일된 처리 가능
- 유지보수 매우 쉬움
'Java' 카테고리의 다른 글
| Java 기초정리 - enum(열거형) (0) | 2026.06.17 |
|---|---|
| Java 기초 정리 - 추상 클래스(abstract class)와 팩토리 메서드 (0) | 2026.06.15 |
| Java 기초 정리 - 상속(Inheritance) (0) | 2026.06.11 |
| JAVA 기초정리 - 다형성과 예외처리 (0) | 2026.06.09 |
| JAVA 기초 정리 - 객체지향 (final, 인터페이스, 캡슐화, 상속) (0) | 2026.06.08 |