[c#] 다형성과 클래스

C#에서 다형성은 객체 지향 프로그래밍의 핵심 원리 중 하나입니다. 다형성이란 하나의 인터페이스나 메소드가 다양한 형태의 데이터 타입을 처리할 수 있는 능력을 말합니다.

클래스와 다형성

C#에서 다형성을 구현하는 가장 일반적인 방법은 상속인터페이스를 활용하는 것입니다. 다형성을 이해하기 위해 먼저 클래스의 개념을 살펴보겠습니다.

클래스

클래스는 객체를 정의하기 위한 청사진(blueprint)입니다. 여러 개의 속성과 메소드를 포함하고 있어, 해당 클래스로부터 생성된 객체들은 이러한 속성과 메소드를 공유합니다.

class Shape
{
    public void Draw()
    {
        // draw shape
    }
}

위의 예시에서 Shape 클래스는 Draw 메소드를 정의하고 있습니다. 이제 이 클래스를 이용해 다형성을 구현해 보겠습니다.

상속과 다형성

상속을 통해 클래스 간에 계층 구조를 형성하면, 하위 클래스는 상위 클래스의 메소드를 재정의(override)하거나 상속받아 사용할 수 있습니다. 이것이 바로 다형성의 핵심입니다. 다음은 상속을 통해 다형성을 구현한 예시입니다.

class Circle : Shape
{
    public new void Draw()
    {
        // draw circle
    }
}

위의 예시에서 Circle 클래스는 Draw 메소드를 재정의하여 다른 기능을 수행합니다. 이때 Shape 클래스의 Draw 메소드와 Circle 클래스의 Draw 메소드는 다형성을 보여주는 예시입니다.

인터페이스와 다형성

인터페이스를 사용하여도 다형성을 구현할 수 있습니다. 인터페이스는 객체 간에 공통된 동작을 정의할 수 있도록 합니다. 다음은 인터페이스를 이용해 다형성을 구현한 예시입니다.

interface IResizable
{
    void Resize(int width, int height);
}

class Square : Shape, IResizable
{
    public void Resize(int width, int height)
    {
        // resize square
    }
}

위의 예시에서 Square 클래스는 Shape 클래스를 상속받으면서 동시에 IResizable 인터페이스를 구현하여 Resize 메소드를 정의합니다.

다형성은 코드의 재사용성과 유지보수성을 높여주는 중요한 개념으로, 객체 지향 프로그래밍에서 꼭 이해해야 하는 개념 중 하나입니다.

결론

C#에서 클래스와 다형성의 관계를 이해하기 위해 상속과 인터페이스의 개념을 활용하여 다양한 형태의 데이터 타입을 처리하는 방법을 살펴보았습니다. 다형성은 객체 지향 프로그래밍의 중요한 특성 중 하나로, 잘 활용함으로써 유연하고 확장 가능한 코드를 작성할 수 있습니다.

참고 자료: