[c#] 다형성과 상속의 관계

다형성(polymorphism)과 상속(inheritance)은 C#에서 객체 지향 프로그래밍을 효과적으로 구현하는 데 중요한 개념입니다. 다형성은 여러 다른 형태를 가질 수 있는 능력을 의미하며, 상속은 기존 클래스로부터 새로운 클래스를 만드는 기능을 제공합니다.

상속

상속은 기존 클래스의 특성을 새로운 클래스에서 재사용할 수 있게 해줍니다. 이를 통해 코드의 재사용성과 유지보수성이 높아지며, 객체 지향 프로그래밍의 주요 장점 중 하나입니다.

public class Animal
{
    public void Eat()
    {
        Console.WriteLine("The animal is eating.");
    }
}

public class Dog : Animal
{
    public void Bark()
    {
        Console.WriteLine("The dog is barking.");
    }
}

위의 예제에서 Animal 클래스는 Eat 메서드를 가지고 있고, Dog 클래스는 Animal 클래스를 상속받아 Eat 메서드를 사용할 수 있으면서 추가로 Bark 메서드를 가지고 있습니다.

다형성

다형성은 같은 이름을 가진 메서드나 속성이 서로 다른 기능을 하는 능력을 말합니다. 이를 통해 하나의 코드로 여러 종류의 객체를 처리할 수 있어 유연하고 확장 가능한 코드를 작성할 수 있습니다.

public class Animal
{
    public virtual void MakeSound()
    {
        Console.WriteLine("The animal makes a sound.");
    }
}

public class Dog : Animal
{
    public override void MakeSound()
    {
        Console.WriteLine("The dog barks.");
    }
}

public class Cat : Animal
{
    public override void MakeSound()
    {
        Console.WriteLine("The cat meows.");
    }
}

위의 예제에서 Animal 클래스의 MakeSound 메서드를 virtual로 선언하고, DogCat 클래스에서 override 키워드를 사용하여 재정의되었습니다. 이로써 다형성을 통해 Animal 타입의 변수로 DogCat 객체를 다형적으로 다룰 수 있습니다.

결론

다형성과 상속은 객체 지향 프로그래밍에서 중요한 개념으로, 코드의 재사용성과 유연성을 높여줍니다. 상속을 통해 클래스 간의 계층 구조를 형성하고, 다형성을 통해 유연하고 확장 가능한 코드를 작성할 수 있습니다.

더 많은 정보는 Microsoft 공식 문서를 참고하세요.