Contents
접기
728x90
우선 인터페이스와 다중상속을 요약해보자면
"인터페이스는 이 함수 꼭 구현해!" 라고 강제하는 '규칙'이고,
다중상속은 그 '규칙'을 여러 개 동시에 적용할 수 있게 해주는 기능이다.
인터페이스 + 다중상속 = 여러 규칙 동시에 따르기
인터페이스를 여러 개 상속하면,
그 인터페이스들이 요구하는 메서드를 반드시 다 구현해야 한다.
interface IWalk {
void Walk();
}
interface ITalk {
void Talk();
}
class Human : IWalk, ITalk {
public void Walk() { Console.WriteLine("걷기"); }
public void Talk() { Console.WriteLine("말하기"); }
}
➡ 이건 Human은 걷고 말할 수 있는 존재여야 해! 라는 `2개의 계약(규칙)`을 동시에 만족하는 것이다.
인터페이스 사용의 핵심
🔥 핵심은 `역할(기능)`을 명확히 분리해서, 조합하고, 다형성을 활용하기 위함
interface IDrivable { void Drive(); }
interface IFlyable { void Fly(); }
class Car : IDrivable { public void Drive() { ... } }
class Plane : IFlyable { public void Fly() { ... } }
class FlyingCar : IDrivable, IFlyable {
public void Drive() { ... }
public void Fly() { ... }
}
- 각각의 기능이 명확히 분리돼 있고,
- 나중에 FlyingCar는 둘 다 조합해서 쓸 수 있다.
- 그리고 어떤 메서드에서는 IDrivable만 받겠다, 어떤 곳은 IFlyable만 받겠다 하는 유연한 구조가 가능해진다.
왜 클래스는 다중상속 안 되는데, 인터페이스는 되게 했을까?
클래스끼리는:
- 멤버(필드, 메서드) 중복 충돌 가능성 있음
- 구현이 겹치면 "누구 걸 쓸래?" 애매해짐
인터페이스는:
- 구현이 없고, 시그니처(이름 + 매개변수)만 있음
- 충돌 위험이 없음
- "이 규칙 지켜!"만 정해주고 실제 구현은 각자 알아서 함
그래서 인터페이스는 다중상속 가능하도록 만든 것이다.
📖 정리
- 인터페이스: "이 기능은 꼭 있어야 해" 를 정해주는 '약속'
- 다중 인터페이스 상속: 여러 역할을 동시에 갖춘 클래스 만들기 가능
- 클래스 상속은 구현까지 물려받지만, 인터페이스는 규칙만 물려줌 → 충돌 X
728x90
'C# > 인터페이스' 카테고리의 다른 글
[C#] 인터페이스 쓰는이유 (0) | 2025.04.24 |
---|---|
[C#] 클래스의 다중상속(다이아몬드문제)와 인터페이스 (0) | 2025.04.23 |