C# 문법 - 인터페이스

오도독·2024년 4월 29일

내배캠

목록 보기
11/26
post-thumbnail

인터페이스


● 인터페이스란

인터페이스란 클래스가 구현해야 하는 멤버들을 정의를 하지만 이를 직접 구현하지는 않아요.

// 아이템을 사용할 수 있는 인터페이스
public interface IUsable
{
    void Use();
}

이런 식으로 인터페이스에서는 멤버에 대한 정의만 해요.
인터페이스는 보통 인터페이스임을 알리기 위해 접두사로 'I'를 사용합니다.

// 아이템 클래스
public class Item : IUsable
{
    public string Name { get; set; }

    public void Use()
    {
        Console.WriteLine("아이템 {0}을 사용했습니다.", Name);
    }
}

// 플레이어 클래스
public class Player
{
    public void UseItem(IUsable item)
    {
        item.Use();
    }
}

// 게임 실행
static void Main()
{
    Player player = new Player();
    Item item = new Item { Name = "Health Potion" };
    player.UseItem(item);
}

//실행 화면
아이템 Health Potion을 사용했습니다.

이렇게 인터페이스를 상속받은 클래스에서 직접적인 구현을 하고요.
인터페이스를 상속받았다면 상속받은 클래스내에서는 인터페이스의 모든 멤버에 대한 구현을 해줘야 해요.

● 인터페이스 왜 사용할까?

인터페이스를 사용하는 이유로는 여러가지가 있는데요.

  1. 인터페이스를 통해 다양한 클래스가 동일한 동작을 수행할 수 있으므로 코드의 재사용성을 높여줘요.
  2. C#에서 클래스는 단일 상속만을 지원하지만, 인터페이스는 다중 상속을 지원해요.
  3. 인터페이스를 사용하면 클래스와 인터페이스 간에 느슨한 결합을 형성할 수 있는데 이는 유연하고 확장 가능한 소프트웨어 설계를 가능하게 해요.

● 인터페이스와 추상클래스

인터페이스와 추상클래스는 얼핏 비슷해 보이는데 둘의 차이는 무엇인지 어떤 장단점이 있을까요.

우선 인터페이스와 추상클래스는 모드 상속되어야 하며, 인스턴스화 할 수 없다는 공통점이 있어요.
하지만 인터페이스는 추상적인 동작만 정의하고, 구현을 갖지 않는 반면에 추상클래스는 일부 동작의 구현을 가지며, 추상메서드를 포함할 수 있어요. 인터페이스는 다중상속이 가능하지만 추상클래스는 단일상속만 가능하다는 점도 있네요.

  • 인터페이스는 클래스들간의 결합도를 낮추고, 유연한 상호작용을 가능하게 하고 코드의 재사용성과 확장성을 향상시키는 장점을 가지지만 인터페이스를 구현하는 클래스가 모든 동작을 구현해야 하는 의무를 가지기 때문에 작업량이 증가할 수 있는 단점을 가지고 있어요.

  • 추상클래스는 공통된 동작을 추상화하여 코드의 중복을 방지하고 확장성을 제공하며 구현된 동작을 가지고 있기 때문에 하위 클래스에서 재정의 하지않아도 될 경우 유용하다는 장점을 가지지만 다중상속이 불가능하고, 상속을 통해 밀접하게 결합된 클래스들을 형성하므로 유연성이 제한될 수 있다는 단점을 가지고 있어요.

0개의 댓글