본문 바로가기

Dev. Java

다형성 자세히 이해하기2










지난 다형성 포스팅에 이은 두번재 다형성 포스팅입니다.

오늘 살펴볼 내용은 부모 자식 사이의 캐스팅과 프로모션입니다. 지난 포스팅보다 이번에는 좀 더 자세하게 들

어가보록 하겠습니다. 특히 이번에는 오버라이딩 된 메서드가 있는 자식 클래스를 캐스팅하는 것입니다.

그럼 설명에 앞서, 부모 자식 클래스 및 메인 프로그램을 준비해 보도록 하죠.


1. 부모 클래스 


2. 자식 클래스

주석에 나와 있는 것과 같이, show 메서드와 speed 메서드는 부모 클래스 Car에 있는 메서드를 오버라이딩 한 

것임을 알 수 있습니다. 자식 클래스에서 새로 만든 것은 works 메서드 밖에 없죠.


3. 메인 프로그램



먼저 car5는 부모 타입의 자식 객체로 생성되었습니다. 즉 레퍼런스 다형성이 발생한 것이죠. 다시 말하면, 

car5 객체로 Car 클래스의 기능을 호출하면, Sports 클래스에 오버라이딩 된 기능이 호출되는 것입니다.


spo1 객체는 별다른 내용이 없네요. 넘어가도록 하겠습니다.


spo2입니다. 클래스는 Car 타입, 인스턴스는 Sports 타입이므로 Sports 클래스의 기능은 사용할 수 없습니다.

그럼 Sports 클래스의 기능을 사용하려면 어떻게 해야 할까요? 10 라인과 같이 (Sports) 타입으로 캐스팅하면

되는 것입니다. 


제가 포스팅 시작한 지 얼마 안되어 설명을 보고 더 헷갈리는 분도 계실 겁니다. 그런 분들은 아래 그림을 참조

하시기 바랍니다. ^^



'Dev. Java' 카테고리의 다른 글

자바 컬렉션 프레임워크 - 개요  (0) 2014.07.27
JVM 메모리 구조  (0) 2014.07.25
다형성 자세히 이해하기1  (0) 2014.07.24
자바 압축 파일(jar) 만들기와 사용하기  (0) 2014.07.23
접근 제한자  (0) 2014.07.22