[java] 다형성 - 참조변수의 형변환

Junseo Kim·2021년 1월 9일
0

[Java]자바 기초

목록 보기
18/35

참조 변수도 형 변환이 가능한데, 서로 상속 관계에 있는 클래스 사이에서만 형 변환을 할 수 있다.

자손타입 -> 조상타입: 캐스트 연산자를 생략할 수 있다.
조상타입 -> 자손타입: 캐스트 연산자를 생략할 수 없다.

자손타입 -> 조상타입 일 때 캐스트 연산자를 생략할 수 있는 이유는 자손타입이 조상타입보다 사용할 수 있는 멤버 수가 많기 때문에, 조상타입으로 형 변환 시 참조 변수가 사용할 수 있는 멤버의 수가 실제 인스턴스의 멤버 수 보다 적기 때문에 문제가 발생하지 않는다.

하지만, 조상타입 -> 자손타입 일 때 캐스트 연산자를 생략할 수 없는 이유는 참조 변수가 사용할 수 있는 멤버의 수는 늘어나는데, 실제 인스턴스에는 참조 변수가 사용할 수 있는 멤버가 존재하지 않을수도 있기 때문이다.(조상 타입 인스턴스가 자손 타입 보다 멤버가 적기때문)

즉, 상속 관계에 있는 클래스들은 서로 형변환은 가능하지만, 실제 참조변수가 가리키는 인스턴스가 조상인 경우 그 자손으로의 형 변환은 할 수 없다.(참조 변수가 사용할 수 있는 멤버가 존재하지 않으므로)

0개의 댓글