인터페이스는 클래스만 상속받을 수 있는 게 아니다.
기존의 인터페이스에 새로운 기능을 추가한 인터페이스를 만들고 싶을 때 인터페이스를 상속하는 인터페이스를 만들면 된다.
ILogger 인터페이스
interface ILogger
{
void WriteLog(string msg);
}
ILogger를 상속받은 인터페이스
interface IFormattableLogger : ILogger
{
void WriteLog(string msg, params Object[] args);
}
보이지는 않지만
void WriteLog(string msg)
메소드를 포함하고 있다.
ILogger를 상속받은 인터페이스를 상속받은 클래스
class ConsoleLogger : IFormattableLogger
{
public void WriteLog(string msg)
{
Console.WriteLine("{0} {1}", DateTime.Now.ToLocalTime(), msg);
}
public void WriteLog(string msg, params Object[] args)
{
string message = string.Format(msg, args);
Console.WriteLine("{0} {1}", DateTime.Now.ToLocalTime(), message);
}
}
2가지 메소드를 모두 구현해야 한다.
테스트
class MainApp
{
static void Main()
{
IFormattableLogger logger = new ConsoleLogger();
logger.WriteLog("The world is not flat.");
logger.WriteLog("{0} + {1} = {2}", 1, 1, 1+1);
}
}
결과
2018-06-18 오후 7:05:56 The world is not flat.
2018-06-18 오후 7:05:56 1 + 1 = 2
참조
뇌를 자극하는 C# 5.0 프로그래밍, 박상현, 한빛미디어
'아카이빙 > C#' 카테고리의 다른 글
[C#] 여러 인터페이스의 멤버를 명시적 구현 (0) | 2018.06.18 |
---|---|
[C#] 인터페이스 다중 상속 (0) | 2018.06.18 |
[C#] 인터페이스 (0) | 2018.06.18 |
[C#] 구조체 (0) | 2018.06.18 |
[C#] 확장 메소드 (Extension Method) (0) | 2018.06.18 |