[TIL] 25.01.08 WED

GDORI·2025년 1월 8일
0

TIL

목록 보기
156/184
post-thumbnail

C# 인터페이스와 추상 클래스

프로젝트를 진행하면서 다른분이 작성해둔 프로토콜 관련 코드를 분석하는 도중 추상 클래스가 있어 해당 내용에 대하여 알아보았다. 추상 클래스는 추상화 기법 중 하나로 다른 친구는 인터페이스가 있다. 추상화는 객체지향 프로그래밍의 중요한 개념으로 코드를 더 단순하고 유연하게 설계할 수 있도록 돕는다.

추상클래스

하나 이상의 추상 메서드를 포함하는 클래스로 상속받는 클래스에서 추상 메서드를 반드시 구현해야 한다. 추상 메서드는 abstract 키워드로 선언이 가능하고 기본 메서드를 제공하면서 하위 클래스에서 확장이 가능하다.

abstract class Animal
{
    public abstract void MakeSound(); // 추상 메서드
    public void Eat() // 구현된 메서드
    {
        Console.WriteLine("This animal eats food.");
    }
}

class Dog : Animal
{
    public override void MakeSound()
    {
        Console.WriteLine("Woof!");
    }

    public void Run() // 추가적인 메서드
    {
        Console.WriteLine("The dog is running.");
    }
}

인터페이스

인터페이스는 클래스가 구현해야 할 멤버의 틀을 제공하며, 인터페이스 자체에서는 구현을 하지 않는다.
interface 키워드로 선언하며 모든 멤버를 반드시 구현할 클래스에서 정의해야하며 일반적으로 계약 정의에 사용된다.

// 두 개의 인터페이스 정의
interface IFlyable
{
    void Fly();
}

interface ISwimmable
{
    void Swim();
}

// 하나의 클래스에서 두 인터페이스 구현
class Bird : IFlyable, ISwimmable
{
    public void Fly()
    {
        Console.WriteLine("The bird is flying.");
    }

    public void Swim()
    {
        Console.WriteLine("The bird is swimming.");
    }
}

class Program
{
    static void Main()
    {
        Bird bird = new Bird();
        bird.Fly();  // 출력: The bird is flying.
        bird.Swim(); // 출력: The bird is swimming.
    }
}

추상 클래스는 기본 동작을 제공하면서 공통적인 부분을 설계하는데 유용하고, 인터페이스는 클래스 간 공통 규격을 강제해 일관된 설계를 지원한다. 각각의 용도와 장점을 판단하여 선택하는게 중요할 것 같다.

profile
하루 최소 1시간이라도 공부하자..

0개의 댓글

관련 채용 정보