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
'C# > 인터페이스' 카테고리의 다른 글
[C#] 왜 클래스는 다중상속 안 되는데, 인터페이스는 되게했을까? (1) | 2025.04.24 |
---|---|
[C#] 클래스의 다중상속(다이아몬드문제)와 인터페이스 (0) | 2025.04.23 |