1. 다형성(Polymorphism)의 개념

다형성은 객체지향 프로그래밍(OOP)의 중요한 특징 중 하나로, "같은 코드가 여러 가지 형태로 실행되는 특성"을 의미합니다.

  • 같은 함수 호출이지만 상황에 따라 다르게 동작할 수 있습니다.
  • 주로 상속 관계에서 함수 재정의(Override)를 통해 다형성을 구현합니다.

2. 다형성의 핵심 원리

  1. 오버라이드(Override):

    • 부모 클래스에 정의된 함수를 자식 클래스에서 재정의하는 것을 의미합니다.
    • 재정의된 함수는 자식 클래스의 로직에 맞게 동작합니다.
    • 결과: 같은 함수 호출이지만, 객체의 타입에 따라 동작이 다르게 나타납니다.
  2. C++과 C#의 차이점:

    • C++과 C#에서는 virtual 키워드를 사용해 가상 함수로 선언해야 재정의가 가능합니다.
    • 블루프린트에서는 함수를 생성하면 기본적으로 오버라이드가 가능합니다.

3. 블루프린트에서의 함수 재정의

3.1 부모 클래스에서 함수 생성

  1. 부모 클래스를 생성합니다.
  2. 부모 클래스에서 공통적인 함수를 만듭니다.
    • 예: Shout()라는 함수를 만들었다고 가정합니다.
  3. 이 함수는 모든 자식 클래스에서 재정의할 수 있습니다.

3.2 자식 클래스에서 함수 오버라이드

  1. 자식 클래스를 생성하고 부모 클래스를 상속받도록 설정합니다.
  2. 자식 클래스에서 오버라이드(Override) 기능을 사용해 부모 함수 Shout()를 재정의합니다.

오버라이드 방법:

  • 블루프린트 에디터에서 오버라이드할 함수를 선택합니다.
  • 해당 함수의 Parent 노드를 끊고 새로운 로직을 정의합니다.

4. 블루프린트 오버라이드 예제

예를 들어 Shout()라는 함수가 다음과 같이 구현되었다고 가정해 봅시다:

  1. 부모 클래스 (기본 동작):

    Shout() 함수: "기본적으로 몬스터가 외친다!"
  2. 자식 클래스 (오버라이드):

    • Goblin 클래스: "고블린이 쉿쉿 소리를 냅니다!"
    • Dragon 클래스: "드래곤이 불을 뿜으며 포효합니다!"

5. 다형성의 적용

다형성을 활용하면 공통된 함수를 호출하더라도 자식 클래스에 따라 다양한 동작을 할 수 있습니다.

예시:
레벨 블루프린트에서 Shout() 함수를 호출하면,

  • Goblin 객체는 고블린의 소리를 내고,
  • Dragon 객체는 드래곤의 소리를 내게 됩니다.

결과: 같은 함수 Shout()를 호출했지만, 객체의 타입에 따라 다르게 동작합니다.


6. 다형성의 장점

  1. 코드의 유연성
    • 같은 함수 호출이 다양한 객체에서 각기 다른 동작을 수행합니다.
  2. 확장성
    • 부모 클래스를 상속받아 새로운 클래스를 추가하면 기존 코드를 변경하지 않아도 됩니다.
  3. 유지보수 용이
    • 하나의 함수 호출로 여러 객체를 관리할 수 있어 코드 관리가 쉬워집니다.

7. 오버라이드 과정 요약

  1. 부모 클래스에서 기본 함수를 정의합니다.
  2. 자식 클래스에서 Override 기능을 통해 함수를 재정의합니다.
  3. 블루프린트에서 함수 호출 시, 자식 클래스의 오버라이드된 함수가 실행됩니다.

8. 다형성 구현 시 주의사항

  • 오버라이드된 함수는 반드시 부모 함수와 이름, 인자 형식이 일치해야 합니다.
  • 부모 함수는 공통된 로직만 정의하고, 자식 클래스에서 구체적인 로직을 재정의합니다.

profile
李家네_공부방

0개의 댓글