Programing/C#

C# 프로그래밍의 기초: 추상 클래스와 인터페이스

유니얼 2024. 8. 24. 14:58
728x90

C# 프로그래밍에서 추상 클래스와 인터페이스는 객체 지향 프로그래밍의 다형성과 코드 재사용을 구현하는 핵심 구조입니다. 이 두 구조는 서로 다른 방식으로 클래스 간의 계약을 정의하고, 구현을 강제하여 설계의 일관성을 유지하도록 돕습니다. 이 블로그 포스트에서는 추상 클래스와 인터페이스의 개념을 설명하고, C#에서 이를 어떻게 활용할 수 있는지를 탐구합니다.

추상 클래스(Abstract Class)

추상 클래스는 인스턴스화할 수 없는 클래스입니다. 이는 하나 이상의 추상 메서드를 포함하거나, 구현된 메서드를 가질 수 있으며, 다른 클래스가 상속받아 사용하도록 설계되었습니다.

 

주요 특징:

  • 기본 구현 제공: 추상 클래스는 일부 메서드나 속성에 대한 기본 구현을 제공할 수 있습니다.
  • 강제 구현: 하나 이상의 추상 메서드를 포함할 수 있으며, 이러한 메서드는 상속받는 서브 클래스에서 반드시 구현해야 합니다.
  • 상속 제한: 하나의 추상 클래스만 상속받을 수 있습니다.

예제코드:

public abstract class Animal
{
    public abstract void MakeSound();
    public void Sleep()
    {
        Console.WriteLine("The animal is sleeping.");
    }
}

인터페이스(Interface)

인터페이스는 메서드, 속성, 이벤트의 시그니처만을 정의하는 계약입니다. 인터페이스 자체는 어떠한 구현도 포함하지 않으며, 이를 구현하는 클래스는 인터페이스의 모든 메서드를 구현해야 합니다.

 

주요 특징:

  • 구현 강제: 인터페이스에 선언된 모든 메서드는 구현 클래스에서 반드시 구현해야 합니다.
  • 다중 구현: 클래스는 여러 인터페이스를 동시에 구현할 수 있습니다, 이는 C#에서 다중 상속을 허용하지 않는 한계를 극복합니다.
  • 타입 유연성: 인터페이스는 다양한 클래스가 동일한 인터페이스를 구현함으로써 일관된 방식으로 처리될 수 있도록 합니다.

예제코드:

public interface IAnimalActions
{
    void Eat();
    void Move();
}

추상 클래스와 인터페이스의 차이점

  • 구현 유무: 추상 클래스는 기본 구현을 포함할 수 있지만, 인터페이스는 시그니처만을 정의하고 구현을 포함할 수 없습니다.
  • 상속 방식: 클래스는 하나의 추상 클래스만 상속받을 수 있으나, 여러 인터페이스를 구현할 수 있습니다.
  • 용도: 추상 클래스는 관련된 클래스 간의 공통 기능을 정의하는 데 사용되며, 인터페이스는 서로 관련 없는 클래스에 특정 기능을 추가하는 데 사용됩니다.

전체예제 코드

using System;

namespace CSharp_ProgramingStudy.Chapter5_OOP
{
    public abstract class Animal
    {
        public abstract void MakeSound();
        public void Sleep()
        {
            Console.WriteLine("The animal is sleeping.");
        }
    }

    public interface IAnimalActions
    {
        void Eat();
        void Move();
    }

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

        public void Eat()
        {
            Console.WriteLine("The dog is eating.");
        }

        public void Move()
        {
            Console.WriteLine("The dog is running.");
        }
    }

    public class Class11
    {
        public void Run()
        {
            Dog myDog = new Dog();
            myDog.MakeSound();
            myDog.Sleep();
            myDog.Eat();
            myDog.Move();
        }
    }
}

결론

추상 클래스와 인터페이스는 C# 프로그래밍에서 객체 지향 설계의 기본을 이루며, 다형성을 활용하는 강력한 수단입니다. 올바르게 사용될 때, 이들은 코드의 유지보수성, 확장성 및 재사용성을 크게 향상시킬 수 있습니다. 각 프로젝트의 요구사항에 맞춰 적절한 구조를 선택하는 것이 중요합니다.

반응형