[java] 업캐스팅과 다운캐스팅
업캐스팅
- 업캐스팅은 하위 클래스의 인스턴스를 상위 클래스 타입으로 변환하는 것을 말합니다.
- 이를 통해 하위 클래스 객체를 상위 클래스로 다룰 수 있습니다.
- 예를 들어,
Animal
클래스가 상위 클래스이고Dog
클래스가Animal
클래스를 상속한 하위 클래스일 때,Animal myAnimal = new Dog();
와 같이 객체를 생성할 수 있습니다.
다운캐스팅
- 다운캐스팅은 업캐스팅의 반대 개념으로, 상위 클래스 타입을 다시 하위 클래스 타입으로 변환하는 것을 말합니다.
- 업캐스팅된 객체를 다시 원래의 하위 클래스 타입으로 돌리는 것이 가능합니다.
- 다운캐스팅을 할 때에는 명시적으로 형변환을 해주어야 합니다.
- 하지만 업캐스팅 이후에 해당 객체가 실제로 하위 클래스의 객체여야만 다운캐스팅을 할 수 있습니다.
Animal myAnimal = new Dog();
if (myAnimal instanceof Dog) {
Dog myDog = (Dog) myAnimal;
// 다운캐스팅된 myDog를 사용
} else {
// myAnimal이 Dog 클래스의 인스턴스가 아닌 경우 처리
}
업캐스팅과 다운캐스팅은 자바의 다형성을 활용하여 프로그래밍을 좀 더 유연하고 확장 가능하게 만드는 중요한 기능입니다.