아카이빙/C#

[C#] 인터페이스를 상속하는 인터페이스

셩님 2018. 6. 18. 19:10

[C#] 인터페이스를 상속하는 인터페이스

  • 인터페이스는 클래스만 상속받을 수 있는 게 아니다.

  • 기존의 인터페이스에 새로운 기능을 추가한 인터페이스를 만들고 싶을 때 인터페이스를 상속하는 인터페이스를 만들면 된다.

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