인프런 커뮤니티 질문&답변

도토리님의 프로필 이미지
도토리

작성한 질문수

김영한의 실전 자바 - 중급 1편

Object 배열

Object[] 참조변수에 Car[] 참조변수 대입

작성

·

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)를 담을 수 없다.

이것을 기억하시면 좋을 것 같네요

도토리님의 프로필 이미지
도토리

작성한 질문수

질문하기