작성
·
156
·
수정됨
0
public class ObjectPolyExample2 {
public static void main(String[] args) {
Car[] cars = {new Car(), new Car(), new Car(), new Car()};
size(cars);
}
private static void size(Object[] objects) {
...
}
}
Object[] 타입 참조변수에 Car[] 타입 참조변수를 넣는 것은 가능하지만 그 반대는 불가한 이유, 그리고 Object[] 타입 참조변수에 Car[] 타입 참조변수를 대입하면 어떻게 되는가에 대해 질문드리고자 합니다.
제가 추측하기에는 자동 업캐스팅이 발생하기 때문이고, 이전에는 Car 타입으로 해석되었던 참조변수가 Object 타입으로 해석될 것이라 생각됩니다(객체 배열이니까 모든 객체에 대한 참조변수가 Car 타입 -> Object 타입으로 해석된다는 뜻).
그리고 Car[] 타입 참조변수에 Object[] 타입 참조변수를 대입했을 때 컴파일 오류가 발생하는 이유는 업캐스팅은 자동으로 발생하지만 다운캐스팅은 자동으로 발생하지 않기 때문입니다. 저는 이렇게 추측했는데 틀린 부분 지적해주시면 감사하겠습니다.
답변 1
0
맞습니다. Up, Down 캐스팅을 생각하시면 됩니다.
부모(Object)는 자손(Car)을 담을 수 있지만,
자손(Car)은 부모(Object)를 담을 수 없다.
이것을 기억하시면 좋을 것 같네요