1. 다형성이란?
다형성이란 하나의 타입으로 여러 형태의 객체를 다룰 수 있는 성질을 의미한다. 즉, 부모 타입의 참조 변수로 서로 다른 자식객체를 참조할 수 있고, 같은 메서드 호출이 객체에 따라 다르게 동작한다.
- 코드의 결합도 감소
- 구현 교체 용이
- 확장에 유리한 구조
2. Upcasting
업캐스팅은 자식 객체를 부모 타입으로 참조하는 것이다.
- 자동 형변환
- 매우 안전
class Animal {
void sound() {}
}
class Dog extends Animal {
void sound() {
System.out.println("멍멍");
}
}
Animal animal = new Dog(); // 업캐스팅
animal.sound();
출력
멍멍
특징
업캐스팅 상태에서는 부모 클래스에 정의된 멤버만 접근 가능하다. 자식 메서드는 부모 타입 접근 불가능함.
class Dog extends Animal {
void run() {}
}
Animal animal = new Dog();
animal.run(); // 컴파일 에러
3. Downcasting
부모 타입으로 참조하던 객체를 다시 자식 타입으로 변환하는 것이다.
- 명시적 형변환 필요
- 잘못 사용 시 런타임 오류 발생 가능 (ClassCastException)
Animal animal = new Dog();
Dog dog = (Dog) animal; // 다운캐스팅
dog.run();
Animal animal = new Animal();
Dog dog = (Dog) animal; // 런타임 오류
4. instanceof 연산자
참조 변수가 특정 클래스 타입으로 형변환 가능한지 검사하는 연산자이다. boolean 타입을 반환하고 안정성을 위해 다운캐스팅 전에 사용한다.
Animal animal = new Dog();
if (animal instanceof Dog) {
Dog dog = (Dog) animal;
dog.run();
}
5. 다형성 정리
- 다형성은 하나의 타입으로 여러 객체를 다루는 개념이다
- 업캐스팅은 자동이며 안전함
- 다운캐스팅은 명시적이며 위험할 수 있다.
- instanceof는 다운캐스팅의 안전장치
- 다형성은 결합도를 낮추는 핵심이다.
'Java & Spring > Java' 카테고리의 다른 글
| 추상화 (0) | 2026.01.07 |
|---|---|
| SOLID 원칙 (0) | 2026.01.06 |
| 캡슐화와 접근 제어자 (0) | 2026.01.06 |
| Object 클래스 (0) | 2026.01.06 |
| 상속(Inheritance)이란 (0) | 2026.01.06 |