Table of Contents
C# – 인터페이스를 사용해야 하는 이유
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
다중 상속
일반적인 클래스는 다중상속이 불가능하지만, interface 는 가능하다.
public class FooC { }
public class FooD { }
public class FooE : FooC, FooD { } // 컴파일러 오류
public interface IFooA { }
public interface IFooB { }
public class FooF : IFooA, IFooB { } // ok
객체정보 간소화
외부 서비스 등에 class 가 아닌 interface 를 파라미터로 사용함으로 해서,
복잡한 구현 코드 대신 필요한 메소드 또는 변수만 제공할 수 있다.
public interface IFooA {
public string Foo();
}
public interface IFooB {
public string Foo();
}
public class FooF : IFooA, IFooB
{
string IFooA.Foo()
{
return "IFooA.Foo";
}
string IFooB.Foo()
{
return "IFooB.Foo";
}
}
IFooA a = new FooF();
IFooB b = new FooF();
Console.WriteLine(a.Foo());
Console.WriteLine(b.Foo());
공통 메소드 강제
다수의 클래스에 공통으로 구현되어야 할 메소드 또는 맴버 변수를 강제할 수도 있다.