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

Connected Brain·2025년 4월 25일

면접 질문 대비

목록 보기
20/60

인터페이스란 무엇인가요?

한 줄 요약

interface : 해당 인터페이스를 구현하는 클래스에서 반드시 구현해야 하는 멤버들을 정의한 계약

인터페이스

  • 인터페이스는 프로퍼티나 메서드를 구체적으로 구현하지 않고, 인터페이스에 포함된 요소를 이를 상속받는 클래스에서 구현해야 함을 명시하는데 사용할 수 있음
  • 인터페이스는 주로 명명시 I(인터페이스 이름)의 구조를 가짐
  • 인터페이스는 직접 인스턴스화 할 수 없으므로 반드시 클래스에 상속되어서만 사용될 수 있음

사용 예시

public interface IObservable<T>
{
    /// <summary>
    /// Dictionary의 내용이 변경될 때 발생하는 이벤트입니다.
    /// </summary>
    event Action<T> AnyValueChanged;

    void Invoke();
}
  • 해당 인터페이스는 IObservable을 상속받는 클래스에서 구현해야할 이벤트와 함수를 명시하고 있으며, 해당 클래스에서 위 요소를 구현하지 않을 경우 컴파일 되지 않음
public class EffectDictionary : ObservableDictionary<int, BaseEffect>, IObservable<EffectDictionary>
{
    public event Action<EffectDictionary> AnyValueChanged = delegate { };

    public override void Invoke() => AnyValueChanged(this);
}
  • 위와 같이 인터페이스를 구현하여야 컴파일이 가능하고, 해당 기능을 사용할 수 있음

  • 인터페이스의 장점은 클래스에 해당 요소의 구현을 강요하므로, 인터페이스로 접근하여도 해당 인터페이스를 상속받는 객체가 반드시 인터페이스의 요소를 갖고 있음을 명확하게 할 수 있음

(외부 클래스)
{
	IObservable<int> observable;
    observable.Invoke();
}
  • 위와 같이 해당 요소에 접근하여 사용할 수 있게 보장하는 점이 인터페이스를 사용할 때의 장점

0개의 댓글