Interface
interface interface_name
{
returnType methodName_1(params);
returnType methodName_2(params);
returnType methodname_3(params);
}
interface ILogger
{
void WriteLog(string message);
}
이벤트, 인덱서, 프로퍼티, 메소드 만을 가질 수 있음
구현부가 없고, 한정자도 사용 불가능하며 기본적으로 public으로 선언됨
Interface는 인스턴스를 가질 수 없지만,
인터페이스를 상속받는 Class의 인스턴스를 만드는 것은 가능함
조건
- 파생 클래스는 인터페이스에 선언된 모든 메소드 밒 프로퍼티를 구현해야함
- 메소드들을 public 한정자도 선언해야함
class ConsoleLogger : ILogger
{
public void WriteLog(string message)
{
Console.WriteLine(
$"{DateTime.Now.ToLocalTime()}, {message}")
}
}
class ClimateMonitor
{
private ILogger logger;
public ClimateMonitor(ILogger logger)
{
this.logger = logger;
}
public void start()
{
while (true)
{
Console.Write("온도를 입력해주세요.: ");
string temperature = Console.ReadLine();
if (temperature == "")
break;
logger.WriteLog("현재 온도 : " + temperature);
}
}
}