ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 2024.03.06 - 다형성(Polymorphism)
    C# 2024. 3. 7. 22:03
    • 다형성(Polymorphism)

    다형성(Polymorphism)이란, 객체가 상황에 따라 여러가지 형태를 가질 수 있는 것을 말한다.

    쉽게 말해서 상속 받은 자식 클래스가 다양한 타입(부모 클래스 타입)을 가질 수 있는 것을 의미한다.

    다형성을 구현, 활용하기 위해서는 상속, 가상함수와 오버라이딩, 업캐스팅을 사용할 필요가 있다. 

     

    • 다형성의 구현

    다형성을 구현한다는 것은,

    1. 자식 클래스가 상속으로 부모의 가상함수를 오버라이딩 하는 것을 통해서,
    2. 업캐스팅 되었을 때,
    3. 부모의 메서드가 아닌 오버라이드 된 자식의 메서드를 사용하는 것(객체가 여러가지 형태를 가짐)을 구현한다. 

    라고 단순하게 설명할 수 있다. 아래의 예시를 보자.

     

    1. 자식 클래스 Cat은 부모 클래스 Animal을 상속받고, Animal의 가상함수 Cry를 오버라이딩 하고 있다.
    2. Main에서 Animal 객체로 Cat 인스턴스를 생성해 주었다. (Cat타입이 부모 클래스인 Animal타입으로 업캐스팅 되었다.) 
    3. animal에서 Cry를 호출하면 Animal의 Cry가 호출되겠지만, Animal의 Cry는 가상함수이기 때문에 오버라이드된 Cat의 Cry가 동작한다. 

     

    • 다형성의 활용

     

    위와 같이 클래스를 선언했다. 위 클래스를 활용해서 Animal의 자식클래스들의 Cry를 호출하고 싶다.

    다형성을 활용하지 않는다면 아래와 같은 코드를 작성할 수 있을 것이다.

     

    다형성을 활용하지 않은 예시

     

    문제 없이 잘 동작하지만, 다형성을 활용하지 않았다. (자식 클래스를 자식 클래스로만 사용했다.)

    다형성을 활용한다면 아래돠 같은 코드를 작성할 수 있다.

     

    다형성을 활용한 예시

     

    자식클래스가 부모클래스의 타입을 가지며, 호출되는 메서드는 자식의 것임을 확인할 수 있다.

    다형성을 활용하면 형식을 통일하여 배열과 리스트로 정리하여 관리를 용이하게 할 수 있고, 코드도 간결해진다.

Designed by Tistory.