[Java] 5. 2 다형성

출간일 2016년 11월 28일

판매가 2000원

형태 ebook

학습에 도움이 되시면 ebook을 구입하여 소장하시면 감사하겠습니다.

언제나 휴일 출판사의 수익금의 대부분은 아프리카에 기부하고 있습니다.


5. 2 다형성

 

상속은 형식을 확장성을 높이고 데이터 신뢰성을 높이는 OOP의 대표적인 특징입니다. 그리고 상속의 특징을 보다 효과적으로 살리기 위해 다형성을 제공합니다.

 

다형성은 같은 표현의 결과가 다양할 수 있다는 특징을 말합니다.

 

Java 언어에서 제공하는 다형성은 크게 형식의 다형성과 메서드의 다형성이 있습니다. 형식의 다형성은 기반 형식의 변수로 파생 형식의 개체를 참조할 수 있다는 것입니다. 그리고 메서드의 다형성은 개체를 참조하는 변수로 메서드를 사용하면 참조하는 개체 형식에 정의한 메서드가 동작하는 것을 말합니다.

 

예를 들어 기반 형식으로 음악가가 있고 음악가 형식을 기반으로 파생한 형식으로 피아니스트, 드러머 등이 있을 때 음악가 형식의 변수로 파생한 형식의 개체를 참조할 수 있다는 것입니다. 이러한 특징은 형식의 다형성입니다.

Musician musician = new Pianist(“홍길동”);

musician.play();

 

그리고 기반 형식에 정의한 메서드를 파생 형식에서 재정의하면 기반 형식의 변수로 해당 메서드를 호출하면 실제 참조하는 개체 형식에 정의한 메서드를 호출합니다. 예를 들어 기반 형식인 음악가에 play 메서드에서는 “랄라라”를 출력하게 정의한다고 가정합시다. 그리고 음악가를 기반으로 파생한 피아니스트에서는 play 메서드를 재정의하고 “딩동댕”을 출력한다고 가정합시다. 만약 음악가 형식의 변수에 피아니스트 개체를 생성한 후에 play 메서드를 호출하면 실제 참조하는 개체 형식인 피아니스트의 play 메서드가 동작하여 “딩동댕” 출력한다는 것입니다.

[소스 5.7] 다형성 예

실행 결과