5.1 다형성이란?
다형성(Polymorphism)이란, 한가지로 여러 가지의 일을 한다는 뜻입니다. 프로그램에서 하나의 형태로 여러 가지 작업을 할 수있다면 이것이 바로 다형성의 원 뜻 그대로입니다. C#에서 이러한 현상은 아주 많은 곳에서 나타납니다. 오버로딩(Overloading) 메서드는 이러한 다형성의 원리를 잘 설명해 주고 있습니다. 하나의 메서드의 이름을 이용하여 여러 개의 메서드를 사용할 수 있는 것이 바로 오버로딩입니다. 하나의 메서드 이름으로 여러 가지 작업을 동시에 할 수 있다는 특성이 있으니 다형성의 원리를 포함한다고 할 수 있습니다.
다형성의 성질이 가장 잘 나타나는 곳은 상속(Inheritance)입니다. 물론, 다른 곳에서도 이러한 다형성은 표출되고 있지만 여러분이 쉽게 접할 수 있는 곳은 바로 상속에서 나타나는 객체지향의 기법에서 쉽게 찾을 수 있습니다. 다형성의 예를 알아보도록 하겠습니다.
이들 중에서도 업캐스팅(Upcasting) 개념이 다형성을 대표한다고 이야기 합니다. 왜냐하면 업캐스팅(Upcasting)에서 다양한 프로그램을 할 수 있게 도와 주는 부분이 많기 때문일 것입니다.
업캐스팅(Upcasting)이란 상위클래스로 하위클래스를 캐스팅하는 다형성의 핵심적인 부분입니다. 업캐스팅을 알고자 한다면 상속(Inheritance)은 무조건적으로 알아야 되고 오버라이딩(Overriding)과 업캐스팅(Upcasting)은 직접적으로 관련 있으니 반드시 숙지해야만 하는 객체지향 개념입니다. 그리고 추상클래스(Abstract Class)와 인터페이스(Interface)에서 나타나는 상속과 구현의 문제도이 업캐스팅과 직접 관련이 있습니다. 알고 보면 업캐스팅은 대부분의 객체지향 개념들을 모아둔 것 같은 느낌이 강합니다. 그래서업캐스팅이 C#의 다형성(Polymorphism)을 대표한다고 이야기를 하는 것 같습니다.
우리는 상속부분을 공부하면서 업캐스팅에 대해서 배웠습니다. 상속에서 ‘업캐스팅(Upcasting)은 이런거야!’ 라는 정도밖에는 언급하지 않았습니다. 업캐스팅이 도대체 어디에 좋은지도 모르고 그냥 그렇게 프로그램 하면 된다는 식으로 대충 프로그램을 하는 경우가 많습니다.
또한, C#에서는 다른 언어에서 보지 못한 Boxing과 UnBoxing의 개념이 등장합니다. 값타입(Value Type)과 참조타입(Reference Type)이 서로 형 변환을 가능하게 만들어 주는 기법입니다. 값타입이 참조타입으로 참조타입이 값타입으로 변환할 수 있다는 것은다형성의 부류에 속한다고 볼 수 있습니다.
이 장에서 핵심적으로 다루고 있는 추상클래스(Abstract Class), 인터페이스(Interface), 업캐스팅(Upcasting)과 다운캐스팅(Downcasting), 박싱(Boxing)과 언박싱(UnBoxing), 델리게이트(Delegate) 등은 모두 다형성(Polymorphism)을 지원하기 위한 강력한 도구입니다. 이들을 분석해 나가면서 C#에서 사용되는 다형성(Polymorphism)에 대한 느낌을 찾아 보도록 하겠습니다.
'etc' 카테고리의 다른 글
LDA (0) | 2012.10.08 |
---|---|
apple publishing systems developer (0) | 2012.09.16 |
공무원 (0) | 2012.08.27 |
사회조석분사 2급 B 정답안 (0) | 2012.08.27 |
bed (0) | 2012.08.17 |