Chapter 7

이담현·2025년 8월 3일
0
  1. 업캐스팅 (Upcasting)
    자식 클래스가 부모 클래스 타입으로 바뀌는 걸 말해요. 예를 들어 강아지 클래스가 동물 클래스를 상속받았을 때 강아지 객체를 동물 타입으로 다룬다.
    // Dog(자식) 객체를 Animal(부모) 타입으로 다룸
    Animal myPet = new Dog();

이건 자동으로 이루어져요. 자식 클래스는 부모 클래스의 모든 것을 물려받았기 때문에 문제가 없음. 하지만 이렇게 바꾸고 나면 myPet 변수로는 Dog 클래스에만 있는 특별한 기능(메소드)은 사용할 수 없게 됨. Animal 클래스에 정의된 기능만 쓸 수 있음.
2. 다운캐스팅 (Downcasting)
업캐스팅된 객체를 원래의 자식 클래스 타입으로 되돌리는 것.
Animal myPet = new Dog();

// myPet을 다시 Dog 타입으로 되돌림
Dog myDog = (Dog) myPet;

다운캐스팅은 수동으로 (클래스이름)을 붙여서 바꿔줘야 해요. 왜냐하면 부모 클래스 타입의 변수가 실제로는 다른 자식 클래스 객체를 가리키고 있을 수도 있어서, 함부로 바꾸면 오류가 발생할 수 있거든요.
예를 들어, Animal 타입의 myPet이 사실은 Cat 객체였는데 Dog로 바꾸려 하면 ClassCastException이라는 오류가 터질 수 있음. 그래서 다운캐스팅을 할 때는 instanceof 키워드를 사용해서 원래 객체가 무엇인지 먼저 확인하고 바꾸는 것이 안전
if (myPet instanceof Dog) {
Dog myDog = (Dog) myPet;
}

profile
최고 최선의 코드를 생성하는 개발자

0개의 댓글