[C#] 인터페이스 (Interface)

장민제·2025년 4월 15일

C# Study

목록 보기
7/11
post-thumbnail

🔒 인터페이스 ?

  • 클래스가 따라야 할 규칙
  • 속성(Property), 메서드, 이벤트 등을 정의만 할 수 있고, 구현은 하지 않는다.
  • 인터페이스를 구현하는 클래스는 모든 멤버를 반드시 구현해야한다.
  • 클래스는 다중 상속이 안되지만, 인터페이스는 가능 !

간단한 예제

// 이동 가능한 기능 인터페이스
public interface IMovable
{
    void Move();
}

// 공격 가능한 기능 인터페이스
public interface IAttackable
{
    void Attack();
}

// 대화 가능한 기능 인터페이스
public interface ITalkable
{
    void Talk();
}

// 플레이어 클래스 - 3개의 인터페이스를 모두 구현
public class Player : IMovable, IAttackable, ITalkable
{
    public string Name { get; set; }

    public Player(string name)
    {
        Name = name;
    }

    public void Move()
    {
        Console.WriteLine($"{Name}이(가) 앞으로 달려갑니다.");
    }

    public void Attack()
    {
        Console.WriteLine($"{Name}이(가) 검으로 공격합니다!");
    }

    public void Talk()
    {
        Console.WriteLine($"{Name}이(가) 마을 사람과 대화를 시작합니다.");
    }
}

// 사용 예시
public static void Main()
{
    Player player = new Player("용사");

    // 각각의 기능을 인터페이스 기준으로 수행
    player.Move();     // 이동
    player.Attack();   // 공격
    player.Talk();     // 대화
}

>>>용사이() 앞으로 달려갑니다.
>>>용사이() 검으로 공격합니다!
>>>용사이() 마을 사람과 대화를 시작합니다.

IMovable, IAttackable, ITalkable 등의 각 기능을 인터페이스를 구현하고 클래스에서 여러 개의 인터페이스를 상속하여 사용 가능

기능 구현을 강제하는 것으로는 추상 클래스(abstract class)도 있는데,
그렇다면 추상 클래스와 차이점은 뭘까?

항목추상 클래스 (abstract class)인터페이스 (interface)
키워드abstract class 클래스명interface 인터페이스명
상속 개수단일 상속만 가능다중 구현 가능 (,로 여러 개 구현 가능)
멤버 구성필드, 생성자, 구현 메서드, 추상 메서드 등 포함 가능추상 메서드만 정의
접근 제한자public, protected, private 등 사용 가능기본적으로 모든 멤버는 public
생성자생성자 가질 수 있음생성자 없음
사용 목적기본 동작 제공 + 자식 클래스에 일부 강제구현 강제 / 기능 명세 제공 (역할 부여)
대표적 사용 예공통 로직 + 일부만 자식이 다르게 구현할 때다중 역할 부여가 필요할 때 (플러그인, 이벤트 등)

추상 클래스 = 공통 기반을 제공하고, 자식 클래스에서의 확장이 필요하다면
인터페이스 = 다양한 클래스에 특정 역할이나 기능강제로 부여하고 싶다면

profile
Unity, C#

0개의 댓글