| 다형성이란?
다형성(polymorphism)이란? 다형성(polymorphism)이란 하나의 객체가 여러 가지 타입을 가질 수 있는 것을 의미한다.
즉, 다시말해 한가지 형태로 여러가지 작업을 할수 있다는 뜻이다. C#에서는 이러한 다형성을 부모 클래스 타입의 참조 변수로 자식 클래스 타입의 인스턴스를 참조할 수 있도록 하여 구현하고 있다.
|다형성의 두가지 특징
1) Up casting (업캐스팅)
부모 클래스의 참조변수로 자식 클래스의 객체를 참조할 수 있다.
객체를 생성할 때 객체(인스턴스)의 타입과 일치하는 타입의 참조변수를 사용하면 당연히 된다. 하지만 부모 클래스의 참조 변수로 자식 클래스의 인스턴스를 참조하도록 하는 것 또한 가능하다.
다음의 코드를 보자
class Animal
{
public void sleep()
{
Debug.Log("동물이 자다");
}
}
class Monkey : Animal
{
public void sleep()
{
Debug.Log("원숭이가 자다");
}
}
public class TestScript : MonoBehaviour
{
Animal monkey = new Monkey();
void Start()
{
Debug.log(monkey.sleep());
}
}
이 때 부모 클래스의 참조변수로 자식클래스의 인스턴스에 접근하는 것이 가능하다. 하지만
Monkey monkey = new Animal();은 되지 않는다. 이유는 자식 인스턴스를 생성할 때는 부모 클래스와 자식클래스를 둘다 메모리에 올려 놓고, 부모 인스턴스를 생성할 때는 부모 클래스 즉 자기자신만 메모리에 올려놓기 때문이다. 따라서 부모 인스턴스를 생성할 때 자식 인스턴스를 참조하면 자식 클래스 즉, 없는 부분을 참조하려고 하기 때문에 에러가 생긴다.
2) down casting(다운캐스팅)
하지만 자식 인스턴스를 형 변환을 통해 자식 인스턴스에 부모 인스턴스가 접근할 수 있다.
예를들어,
Monkey monkey = new Monkey();
Animal animal = (animal)monkey;
이렇게 자식 인스턴스를 부모 인스턴스로 형 변환을 하면 가능하다. 이게 바로 다운 캐스팅이다.
'C#_ Unity Game programming' 카테고리의 다른 글
Unity, MVC와 MVP패턴의 차이점 및 실습 코드 (0) | 2024.01.05 |
---|---|
Unity, Scriptable Object개념 (1) | 2024.01.04 |
C# 인터페이스와 추상클래스 공통점과 차이점 (2) | 2024.01.02 |
C# 클래스 다형성 overide,virtual (1) | 2024.01.01 |
C#, 클래스 개념 지식 : 오버로딩, 오버라이딩 (0) | 2024.01.01 |