C#/인터페이스

[C#] 인터페이스 쓰는이유

도도돋치 2025. 4. 24. 00:12
Contents 접기
728x90

 

인터페이스 쓰는 이유

인터페이스 공부하다가, "그냥 함수 정의하면 되지, 인터페이스 왜 써야 해?"가 궁금해서 찾아보았다.

 

간단히 말하면, 인터페이스는 '약속'이자 '설계도'이다.

 

예를들어 코드를 살펴보자.

class Person {
    public void Walk() { ... }
    public void Talk() { ... }
}

이렇게 해도 Person은 걷고 말할 수 있고, 그 자체로는 문제가 없다.
하지만 다른 클래스도 걷고 말해야 한다면?

 

인터페이스 없을 때의 문제🤔

Person, Robot, Dog 클래스가 있다고 해보자.

 

셋 다 Walk() 메서드를 가진다고 해도,
컴파일러는 "이 클래스들이 걷는 기능이 반드시 있음" 을 보장해줄 수 없다.

 

 

인터페이스를 쓰면 좋은점

1. "Walkable한 애들" 이라고 묶을 수 있음

interface IWalkable {
    void Walk();
}

class Person : IWalkable {
    public void Walk() { ... }
}

class Robot : IWalkable {
    public void Walk() { ... }
}

void StartWalking(IWalkable walker) {
    walker.Walk();
}

→ 어떤 클래스가 오든 IWalkable만 구현돼 있으면 걷게 만들 수 있다.
→ 즉, 동일한 기능을 갖는 다양한 객체를 하나의 타입으로 다룰 수 있다!

 

 

2. 여러 클래스가 같은 기능을 공유할 때 일관성 유지

 

  • 예를 들어, 회사에서 "모든 출력 가능한 클래스는 Print()를 가져야 함"이라는 룰이 있다면?
  • 그냥 함수만 있으면 누가 안 넣어도 컴파일은 된다 → 문제 생김.
  • 인터페이스 쓰면 누락되면 컴파일 에러 → 안정성 확보.

 

3. 다형성(polymorphism)과 유연한 설계

 

인터페이스를 통해

구현은 다르되, 사용은 동일하게, 코드를 더 유연하고 확장성 있게 만들 수 있다.

 

요약하면,

그냥 메서드 정의 인터페이스 사용
한 클래스에서만 필요할 땐 OK 여러 클래스에 동일 기능 필요할 때 유리
재사용 어려움 재사용, 다형성 가능
규칙 강제 못 함 메서드 강제 구현 가능
구조 작음 구조적 설계 가능

 

 

궁극적으로는 유지보수성, 확장성, 협업 시 안정성 때문에 인터페이스를 쓴다.


공통된 규칙이 필요하거나 다형성을 쓰고 싶을 때 인터페이스가 매우 좋다.

 

728x90