-
Unity | 다형성(Polymorphism) 이란?다시한번 개발자도전! 2026. 1. 14. 16:11
오늘은 다형성에 대해 공부해보자!
다형성(Polymorphism)이란?
- 어원: 'Poly(여러 개)' + 'Morph(형태)' = **"다양한 형태를 가질 수 있는 능력"**임.
- 객체 지향 프로그래밍(OOP)에서 하나의 인터페이스나 참조 변수가 다양한 타입의 객체를 다루거나, 하나의 메소드가 다양한 방식으로 동작하는 능력
- 코드의 재사용성과 유연성을 높이며, 상위 클래스 타입의 변수가 하위 클래스의 객체를 참조하는 방식
1. 오버로딩 (Overloading):
정적 다형성이라고도 부름. 같은 이름의 함수를 매개변수(입력값)만 다르게 해서 여러 개 만드는 기술임.
- 다형성과의 관계: "공격한다"는 이름은 하나지만, Attack()이냐 Attack(10)이냐에 따라 동작의 형태가 달라짐.
- 특징: 컴파일러가 "아, 이건 인자가 없으니 1번 함수네!"라고 미리 정해버림.
public class Player { public void Move() { /* 걷기 */ } public void Move(float speed) { /* 특정 속도로 뛰기 */ } // 다형성(오버로딩) }2. 추상화 (Abstraction): "무엇을 할지 결정하는 약속"
구체적인 내용은 숨기고 핵심적인 기능(껍데기)만 정의함.
- 다형성과의 관계: "모든 유닛은 Move를 해야 한다"라고 추상적으로 약속해둬야, 나중에 전사든 마법사든 각자 다형성을 발휘해서 움직일 수 있음.
- 특징: abstract나 interface를 사용해서 실체 없는 '설계도'를 만듦.
public abstract class Unit { public abstract void Attack(); // 추상화: "공격 기능은 반드시 있어야 해!" }3. 오버라이딩 (Overriding): "부모의 명령을 내 식대로 실행"
동적 다형성의 핵심임. 부모가 물려준 함수를 자식이 자기 입맛에 맞게 완전히 새로 짜는 것임.
- 다형성과의 관계: 똑같은 Attack() 명령을 내려도, 전사는 칼을 휘두르고 마법사는 마법을 씀. **실행 시점(Runtime)**에 객체에 따라 행동이 결정됨.
- 특징: virtual과 override 키워드를 사용함.
public class Warrior : Unit { public override void Attack() => Console.WriteLine("칼 휘두르기!"); // 다형성(오버라이딩) } public class Mage : Unit { public override void Attack() => Console.WriteLine("파이어볼!"); // 다형성(오버라이딩) }'다시한번 개발자도전!' 카테고리의 다른 글
Unity | 콜라이더(Collider)와 충돌(collision) (0) 2026.01.20 Unity | 추상클래스 (Abstract Class)와 인터페이스(Interface) (0) 2026.01.15 다시한번 개발자도전! 9일차 (상속, 캐스팅,base,오버라이딩) (0) 2026.01.14 OOP 4대 원칙과 SOLID 5대 원칙 (0) 2026.01.13 절차지향(Procedural)과 객체지향(Object-Oriented, OOP) (0) 2026.01.13