[C#] Interface 예제

2016.07.09 18:24





우선 Car라는 클래스를 만들고 그 클래스를 사용하는 Run이라는 함수를 만들어 본다.


private void Form1_Load(object sender, EventArgs e)
{
Car a = new Car();
Run(a);
Close();
}
public void Run(Car car)
{
MessageBox.Show("run!");
}
public class Car
{
}


이번에는 Bike라는 클래스를 만들고 그 클래스를 사용하는 Run이라는 함수를 만들어 본다.
Run을 표시하기 위해 Car를 위한 것과 Bike를 위한 것이 두 개가 필요하다.

private void Form1_Load(object sender, EventArgs e)
{
Car a = new Car();
Bike b = new Bike();
carRun(a);
bikeRun(b);
Close();
}
public void carRun(Car car)
{
MessageBox.Show("run!");
}
public void bikeRun(Bike bike)
{
MessageBox.Show("run!");
}
public class Car
{
}
public class Bike
{
}


이런 것을 쉽게 사용하기 위해서는 interface를 사용하면 쉽게 아래와 같이 해결할 수 있다.
Vehicle이라는 interface를 만들어 Car나 Bike는 Vehicle이라는 interface를 가지고 있다는 것을 정의한다.
private void Form1_Load(object sender, EventArgs e)
{
Car a = new Car();
Bike b = new Bike();
Run(a);
Run(b);
Close();
}
public interface Vehicle
{
}
public void Run(Vehicle v)
{
MessageBox.Show("run!");
}
public class Car : Vehicle
{
}
public class Bike : Vehicle
{
}

Interface는 아래와 같이 Method를 정의할 수 있다.
Interface는 실제 함수를 쓸 수는 없고 함수의 형태만 정의할 수 있다.
Interface를 상속하는 클래스에서 Interface에 정의된 함수를 반드시 구현해야만 된다.

private void Form1_Load(object sender, EventArgs e)
{
Vehicle a = new Car();
Vehicle b = new Bike();
Run(a);
Run(b);
Close();
}
public void Run(Vehicle vehicle)
{
MessageBox.Show(vehicle.getName() + " run!");
}
public interface Vehicle
{
String getName();
}
public class Car : Vehicle
{
public String getName()
{
return "Car";
}
}
public class Bike : Vehicle
{
public String getName()
{
return "Bike";
}
}














Posted by 떡잎
BLOG main image
프로그래밍 공부하면서 써가는 개인 노트 (따라서 여기에 씌여있는 소스의 신빙성을 보장 못함 -.-;;) 이 블로그 보면서 틀린 점이 있으면 꼬옥 알려주세요. by 띠리

공지사항

카테고리

분류 전체보기 (323)
Win32 SDK 초보 (27)
통신관련 (11)
MFC TIP (20)
C/C++ TIP (10)
개발기타 (10)
링크 (2)
견물생심 (24)
이것저것 (8)
용어메모 (3)
데이터베이스 (32)
비주얼 베이직 (10)
하드웨어 (3)
C# (42)
Xcode (3)
델파이 (82)
홈페이지 (5)
MindStorm (0)
낙서 (5)
스크래치 (0)
기타 (6)
아두이노 (1)
라즈베리파이 (2)
안드로이드 (6)
파이썬 (0)
WEB (2)
Total : 987,322
Today : 400 Yesterday : 409