namespace Project1
{
interface ILogger
{
void WriteLog(string message);
}
interface IFormattableLogger : ILogger
{
void WriteLog(string format, params Object[] args);
}
class ConsoleLogger : IFormattableLogger
{
public void WriteLog(string message)
{
Console.WriteLine("{0}, {1}", DateTime.Now.ToLocalTime(), message);
}
public void WriteLog(string format, params Object[] args)
{
string message = String.Format(format, args);
Console.WriteLine("{0}, {1}", DateTime.Now.ToLocalTime(), message);
}
}
class MainApp
{
static void Main(string[] args)
{
IFormattableLogger logger = new ConsoleLogger();
logger.WriteLog("The world is not flat.");
logger.WriteLog("{0} + {1} = {2}", 1, 1, 2);
}
}
}
언어는 C#
'뇌를 자극하는 C# 프로그래밍'에서 발췌한 코드임.
마지막 메인 함수의 IFormattableLogger logger = new ConsoleLogger(); 를 보면
ConsoleLogger를 IFormattableLogger로 캐스팅한 꼴이잖아?
아직 형 변환의 응용법을 잘 몰라서 그런지 이러한 모습이 무슨 이점이 있는지 잘 모르겠음.
그러니까
IFormattableLogger logger = new ConsoleLogger();
이 코드가
ConsoleLogger logger = new ConsoleLogger();
보다 얻을 수 있는 이점이 무엇임???
인터페이스를 활용 가능합니다!!!
자세한 설명 감사합니다 형님 ㅠㅠ 이해할 때까지 계속 읽어볼게요 ㅜ