[c#] 다형성과 객체의 동적 생성
C#에서 다형성(polymorphism)은 객체 지향 프로그래밍의 핵심 개념 중 하나로, 여러 클래스들이 동일한 인터페이스나 기반 클래스를 공유하여 다양한 동작을 할 수 있게 합니다.
다형성 (Polymorphism)
정적 다형성 (Static Polymorphism)
정적 다형성은 메서드 오버로딩(overloading)과 연결됩니다. 메서드 오버로딩은 동일한 이름을 가진 메서드가 서로 다른 매개변수의 개수나 형식을 가질 수 있게 하는 개념입니다. 이로 인해 동일한 이름의 메서드를 호출할 때 매개변수의 형식에 따라 적절한 메서드가 선택되어 실행됩니다.
class Calculator
{
public int Add(int a, int b)
{
return a + b;
}
public double Add(double a, double b)
{
return a + b;
}
}
동적 다형성 (Dynamic Polymorphism)
동적 다형성은 가상 메서드(virtual method)와 메서드 오버라이딩(overriding)을 사용하여 구현됩니다. 가상 메서드는 파생 클래스에서 재정의(override)될 수 있는 메서드이며, 이를 통해 동일한 인터페이스를 가진 다른 클래스의 객체가 실행 시에 동일한 메서드 호출로 다른 동작을 할 수 있습니다.
class Shape
{
public virtual void Draw()
{
Console.WriteLine("Drawing a shape");
}
}
class Circle : Shape
{
public override void Draw()
{
Console.WriteLine("Drawing a circle");
}
}
class Rectangle : Shape
{
public override void Draw()
{
Console.WriteLine("Drawing a rectangle");
}
}
객체의 동적 생성 (Dynamic Object Creation)
C#에서는 Activator
클래스를 사용하여 실행 시에 동적으로 객체를 생성할 수 있습니다. Activator.CreateInstance
메서드를 사용하면 타입의 인스턴스를 동적으로 생성할 수 있습니다.
class Program
{
static void Main()
{
string typeName = "MyNamespace.MyClass";
Type myType = Type.GetType(typeName);
if(myType != null)
{
object myObject = Activator.CreateInstance(myType);
}
}
}
다형성과 객체의 동적 생성은 프로그램의 유연성과 확장성을 높여주며, 객체 지향 프로그래밍에서 강력한 도구로 활용됩니다.
참고 문헌:
- Microsoft 문서: Polymorphism in C#
- Microsoft 문서: Activator.CreateInstance Method