• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

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

24.04.27 22:47 작성 24.04.27 22:48 수정 조회수 49

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

생각하는자님의 프로필

생각하는자

2024.04.28

맞습니다. Up, Down 캐스팅을 생각하시면 됩니다.

부모(Object)는 자손(Car)을 담을 수 있지만,

자손(Car)은 부모(Object)를 담을 수 없다.

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