C# 인터페이스(Interface) 완벽 이해: 정의, 예제, 실전 활용법
C# 인터페이스란 무엇인가?
C#에서 인터페이스는 클래스나 구조체가 반드시 구현해야 하는 멤버(메서드, 속성, 이벤트, 인덱서) 집합을 정의하는 계약입니다. 무엇(what)을 지정하지만 어떻게(how)는 지정하지 않아, 서로 다른 타입이 동일한 연산 세트를 노출하면서 구현 세부사항을 숨길 수 있게 합니다.
인터페이스는 느슨한 결합을 촉진하고, 다형성을 가능하게 하며, 타입 정의의 다중 상속을 지원하여 테스트 가능하고 유지보수하기 쉬운 코드 작성에 필수적입니다.
구체적 예제
아래는 인터페이스 선언, 구현, 사용법을 보여주는 최소한의 콘솔 프로그램입니다.
using System;
namespace DemoApplication {
// 1. 계약 선언
interface IGuru99Interface {
void SetTutorial(int id, string name);
string GetTutorial();
}
// 2. 계약 구현
class Guru99Tutorial : IGuru99Interface {
private int tutorialId;
private string tutorialName;
public void SetTutorial(int id, string name) {
tutorialId = id;
tutorialName = name;
}
public string GetTutorial() => tutorialName;
static void Main(string[] args) {
var tutor = new Guru99Tutorial();
tutor.SetTutorial(1, ".Net by Guru99");
Console.WriteLine(tutor.GetTutorial());
Console.ReadKey();
}
}
}

핵심 포인트:
- 인터페이스는
interface 키워드로 선언합니다.
- 시그니처만 포함하며 구현은 클래스가 제공합니다.
- 인터페이스를 구현하는 클래스는 모든 멤버를 정의해야 하므로 계약 준수를 보장합니다.
인터페이스를 사용하는 이유?
- 추상화 – "무엇"과 "어떻게"를 분리
- 다형성 – 서로 다른 구현을 균일하게 처리
- 테스트 용이성 – 단위 테스트에서 실제 구현을 목(Mock)이나 스텁(Stub)으로 교체 가능
요약
인터페이스는 타입이 지원해야 할 연산을 명시합니다. 인터페이스를 구현함으로써 클래스는 해당 계약 준수를 보장하며, 깔끔한 아키텍처와 확장 가능한 설계를 촉진합니다.