-
2024.03.06 - 다형성(Polymorphism)C# 2024. 3. 7. 22:03
- 다형성(Polymorphism)
다형성(Polymorphism)이란, 객체가 상황에 따라 여러가지 형태를 가질 수 있는 것을 말한다.
쉽게 말해서 상속 받은 자식 클래스가 다양한 타입(부모 클래스 타입)을 가질 수 있는 것을 의미한다.
다형성을 구현, 활용하기 위해서는 상속, 가상함수와 오버라이딩, 업캐스팅을 사용할 필요가 있다.
- 다형성의 구현
다형성을 구현한다는 것은,
- 자식 클래스가 상속으로 부모의 가상함수를 오버라이딩 하는 것을 통해서,
- 업캐스팅 되었을 때,
- 부모의 메서드가 아닌 오버라이드 된 자식의 메서드를 사용하는 것(객체가 여러가지 형태를 가짐)을 구현한다.
라고 단순하게 설명할 수 있다. 아래의 예시를 보자.
- 자식 클래스 Cat은 부모 클래스 Animal을 상속받고, Animal의 가상함수 Cry를 오버라이딩 하고 있다.
- Main에서 Animal 객체로 Cat 인스턴스를 생성해 주었다. (Cat타입이 부모 클래스인 Animal타입으로 업캐스팅 되었다.)
- animal에서 Cry를 호출하면 Animal의 Cry가 호출되겠지만, Animal의 Cry는 가상함수이기 때문에 오버라이드된 Cat의 Cry가 동작한다.
- 다형성의 활용
위와 같이 클래스를 선언했다. 위 클래스를 활용해서 Animal의 자식클래스들의 Cry를 호출하고 싶다.
다형성을 활용하지 않는다면 아래와 같은 코드를 작성할 수 있을 것이다.
다형성을 활용하지 않은 예시 문제 없이 잘 동작하지만, 다형성을 활용하지 않았다. (자식 클래스를 자식 클래스로만 사용했다.)
다형성을 활용한다면 아래돠 같은 코드를 작성할 수 있다.
다형성을 활용한 예시 자식클래스가 부모클래스의 타입을 가지며, 호출되는 메서드는 자식의 것임을 확인할 수 있다.
다형성을 활용하면 형식을 통일하여 배열과 리스트로 정리하여 관리를 용이하게 할 수 있고, 코드도 간결해진다.
'C#' 카테고리의 다른 글
2024.03.07 - 함수를 지원하는 여러가지 키워드 (0) 2024.03.08 2024.03.06 - 인터페이스(interface) (0) 2024.03.08 2024.03.06 - 업캐스팅(Upcasting) (0) 2024.03.06 2024.03.06 - 추상화(Abstract) (0) 2024.03.06 2024.03.06 - 오버라이딩(Overriding), 가상 함수(virtual) (0) 2024.03.06