다형성(polymorphism)은 객체 지향 프로그래밍의 중요한 특징 중 하나이며, C#에서도 다형성을 지원합니다. 파생 클래스(derived class)는 기본 클래스(base class)의 기능을 상속받을 수 있습니다. 이번 글에서는 C#에서 다형성과 파생 클래스를 어떻게 연동하는지에 대해 알아보겠습니다.
다형성(Polymorphism)이란?
다형성은 같은 이름의 메서드나 속성을 다른 방식으로 구현하는 기능을 말합니다. 이를 통해 코드를 더 유연하게 만들 수 있고, 코드의 재사용성을 높일 수 있습니다. C#에서는 다형성을 구현하기 위해 가상 메서드(virtual method)와 오버라이딩(overriding)을 사용합니다.
파생 클래스(Derived Class)와 다형성 연동
파생 클래스는 기본 클래스의 멤버를 상속받을 수 있으며, 이를 통해 다형성을 구현할 수 있습니다. 다음은 파생 클래스와 다형성을 연동하는 간단한 예제 코드입니다.
using System;
class Animal
{
public virtual void MakeSound()
{
Console.WriteLine("Some sound");
}
}
class Dog : Animal
{
public override void MakeSound()
{
Console.WriteLine("Bark");
}
}
class Cat : Animal
{
public override void MakeSound()
{
Console.WriteLine("Meow");
}
}
class Program
{
static void Main()
{
Animal[] animals = new Animal[] { new Dog(), new Cat() };
foreach (var animal in animals)
{
animal.MakeSound();
}
}
}
위 예제에서 Animal
클래스는 MakeSound
메서드를 정의하고 있습니다. Dog
클래스와 Cat
클래스는 각각 MakeSound
메서드를 오버라이딩하여 각각 “Bark”와 “Meow”를 출력하도록 재정의하고 있습니다. Main
메서드에서는 다형 배열을 이용하여 Dog
와 Cat
의 다양한 소리를 출력하고 있습니다.
다형성을 이용하면 한 가지 타입을 사용하면서 여러 가지 서브 타입을 다룰 수 있기 때문에 코드가 더 유지보수가 쉬워지고, 확장성이 높아집니다.
결론
C#에서는 다형성과 파생 클래스를 연동하여 객체의 유연한 동작을 구현할 수 있습니다. 이를 통해 코드의 재사용성을 높이고, 유지보수성을 높일 수 있습니다. 객체 지향 프로그래밍에서는 다형성을 적절히 활용하여 유연하고 확장 가능한 코드를 작성하는 것이 중요합니다.
참고 문헌: Microsoft Docs - Polymorphism in C#
관련 읽을거리: C# 다형성의 개념과 활용