출간일 2016년 11월 28일
판매가 2000원
형태 ebook
이 책의 모든 내용은 http://ehpub.co.kr에 공개하고 있습니다.
학습에 도움이 되시면 ebook을 구입하여 소장하시면 감사하겠습니다.
언제나 휴일 출판사의 수익금의 대부분은 아프리카에 기부하고 있습니다.
5.2 다형성
상속은 형식을 확장성을 높이고 데이터 신뢰성을 높이는 OOP의 대표적인 특징입니다. 그리고 상속의 특징을 보다 효과적으로 살리기 위해 다형성을 제공합니다.
다형성은 같은 표현의 결과가 다양할 수 있다는 특징을 말합니다.
Java 언어에서 제공하는 다형성은 크게 형식의 다형성과 메서드의 다형성이 있습니다. 형식의 다형성은 기반 형식의 변수로 파생 형식의 개체를 참조할 수 있다는 것입니다. 그리고 메서드의 다형성은 개체를 참조하는 변수로 메서드를 사용하면 참조하는 개체 형식에 정의한 메서드가 동작하는 것을 말합니다.
예를 들어 기반 형식으로 음악가가 있고 음악가 형식을 기반으로 파생한 형식으로 피아니스트, 드러머 등이 있을 때 음악가 형식의 변수로 파생한 형식의 개체를 참조할 수 있다는 것입니다. 이러한 특징은 형식의 다형성입니다.
Musician musician = new Pianist("홍길동");
musician.play();
그리고 기반 형식에 정의한 메서드를 파생 형식에서 재정의하면 기반 형식의 변수로 해당 메서드를 호출하면 실제 참조하는 개체 형식에 정의한 메서드를 호출합니다. 예를 들어 기반 형식인 음악가에 play 메서드에서는 "랄라라"를 출력하게 정의한다고 가정합시다. 그리고 음악가를 기반으로 파생한 피아니스트에서는 play 메서드를 재정의하고 "딩동댕"을 출력한다고 가정합시다. 만약 음악가 형식의 변수에 피아니스트 개체를 생성한 후에 play 메서드를 호출하면 실제 참조하는 개체 형식인 피아니스트의 play 메서드가 동작하여 "딩동댕" 출력한다는 것입니다.
public class Musician { public void play(){ System.out.println("랄라라"); } } |
public class Pianist extends Musician{ @Override public void play(){ System.out.println("딩동댕"); } } |
public class Drummer extends Musician{ @Override public void play(){ System.out.println("두두둥"); } } |
public class Program { public static void main(String[] args){ Musician musician = new Musician(); musician.play(); musician = new Pianist(); musician.play(); musician = new Drummer(); musician.play(); } } |
랄라라 딩동댕 두두둥 |
[소스 5.7] 다형성 예
'언어 자료구조 알고리즘 > 디딤돌 Java 언어 Part1' 카테고리의 다른 글
[Java] 6. 배열 및 기본 문법들 (0) | 2016.11.15 |
---|---|
[Java] 5. 6 모든 클래스의 super 클래스인 Object (0) | 2016.11.14 |
[Java] 5.5 안전한 하향 캐스팅을 위한 예약어 instanceof (0) | 2016.11.14 |
[Java] 5.4 인터페이스 (0) | 2016.11.14 |
[Java] 5.3 추상화 (0) | 2016.11.14 |
[Java] 5. OOP 상속과 다형성, 5.1 상속 (0) | 2016.04.04 |
[Java] 4. 5 정적 멤버와 static 키워드와 상수화에 사용하는 final 키워드 (0) | 2016.04.04 |
[Java] 4.4 개체의 생성과 소멸 (0) | 2016.04.04 |
[Java] 4.3 중복 정의(Overloading) (0) | 2016.04.04 |
[Java] 4.2 접근 지정자, Java 언어 (0) | 2016.04.04 |