/*interface는 규약이다. 반드시 interface상속을 했으면 규약대로 구현을 해야 한다.
상속했는데, 구현을 안했다면 위배가 된다.
usb를 예로 들수 있다. usb를 만든업체는 windows라는 os에서 동작하도록 하려면
windows os에서 규약해놓은 interface의 대부분을 구현해줘야 usb를 노트북이나 데스크탑에 꽂았을때에
제대로 동작하는것이다. usb를 만들어서 windows os에서 동작하려면, windows os의 interface규약집을 참조하여
구현하여야 할것이다. 그러므로 method의 선언만 되어 있을뿐, 구현되는부분은 usb제조사에서 구현해서
사용해야 한다.*/
using System;
interface IAnimal
{
void Eat();
}
interface IAnimalDrink
{
void Drink();
}
class Person : IAnimal,IAnimalDrink
{
public void Eat()
{
Console.WriteLine("Rice.Shape Eating,,,,!!");
}
public void Drink()
{
Console.WriteLine("Water.Shape Drinking,,,,!!");
}
}
class Lion : IAnimal,IAnimalDrink
{
public void Eat()
{
Console.WriteLine("Meat.Shape Eating,,,,!!");
}
public void Drink()
{
Console.WriteLine("Water.Shape Drinking,,,,!!");
}
}
class Camel : IAnimalDrink
{
public void Eat()
{
Console.WriteLine("Green.Shape Eating,,,,!!");
}
public void Drink()
{
Console.WriteLine("Water.Shape Drinking,,,,!!");
}
}
class Program
{
static void Main(string[] args)
{
Person myPerson = new Person();
Lion myLion = new Lion();
Camel myCamel = new Camel();
ExecuteInterface(myCamel);
ExecuteInterface(myPerson);
ExecuteInterface(myLion);
}
private static void ExecuteInterface(object obj)
{
IAnimal target1 = obj as IAnimal;
if (target1 != null)
{
target1.Eat();
}
IAnimalDrink target2 = obj as IAnimalDrink;
if (target2 != null)
{
target2.Drink();
}
}
}
'c# 언어' 카테고리의 다른 글
인터페이스를 사용해야 하는 이유 (0) | 2022.04.14 |
---|---|
interface는 규약이다. usb를 예로 들어보면(?) (0) | 2022.04.13 |
interface 이해 (0) | 2022.04.13 |
싱글톤 패턴(Singleton Pattern) - APMMemory.GetInstance.bgGridColor (0) | 2022.04.07 |
WinForms & WPF(Windows Presentation Foundation) 비교 (0) | 2022.02.22 |