* 인터페이스(Interface)
0. 인터페이스는 특정한 클래스를 만들 때 사용하는 규약이다.
1. 인터페이스 상속하기
class Program
{
class Dummy : IDisposable //IDisposable 인터페이스를 상속하고 이를 구현했을 때,
{
public void Dispose()
{
throw new NotImplementedException(); //자동으로 구현되는 부분. 이 부분을 알맞게 바꿔 코딩한다.
Console.WriteLine("Dispose() 메서드를 호출합니다.");
}
}
static void Main(string[] args)
{
Dummy dummy = new Dummy();
dummy.Dispose();
//혹은 위 두 문장을
using(Dummy dummy = new Dummy())
{
}
//이렇게 using 블록을 사용해주면 using 블록을 벗어날 때 자동으로 Dispose() 메서드를 호출한다.
}
}
* 인터페이스 생성
0. 인터페이스는 클래스와 동급의 카테고리이다. 즉, 클래스를 생성하는 위치라면 어디든지 만들 수 있다.
1. 인터페이스를 생성할 땐 interface 키워드를 사용한다.
interface [인터페이스 이름]{}
2. 보통 인터페이스는 클래스 내부에서 생성하지 않고 다른 파일에 생성해서 사용한다.
* 인터페이스 멤버
0. 인터페이스 생성
interface IBasic
{
int TestInstanceMethod();
int TestProperty{get; set;}
}
1. 인터페이스 상속
class Program
{
class TestClass : IBasic
{
}
}
2. 인터페이스 구현
class Program
{
class TestClass : IBasic
{
public int TestInstanceMethod()
{
throw new NotImplementedException();
}
public int TestProperty
{
get
{
throw new NotImplementedException();
}
set
{
throw new NotImplementedException();
}
}
}
}
3. 다형성 구현 가능(다중 상속 구현) : 하나의 클래스가 여러 부모 클래스를 가질 수 있다.
static void Main(string[] args)
{
IBasic basic = new TestClass();
}
>> 하나의 클래스가 여러 부모 클래스를 가질 수 있다.
class Child : Parent, IDisposable, IComparable
{
public void Dispose()
{
throw new NotImplementedException();
}
public int CompareTo(object obj)
{
throw new NotImplementedException();
}
}
* 인터페이스 사용 시 주의사항
0. 여러 개의 인터페이스 상속으로 인해 구현해야 하는 메서드 이름이 겹칠 때는 <인터페이스>.<메서드 이름>() 형태로 구분해서 구현
'개발 > 기타' 카테고리의 다른 글
[Github] SSH key 등록 및 커밋 (2) | 2016.11.07 |
---|---|
[C#] 델리게이터(delegate)와 람다(lambda) (5) | 2016.06.09 |
[C#] 제네릭(Generic)과 구조체(Struct) (2) | 2016.06.05 |
[C#] 상속과 다형성 (2) | 2016.06.05 |
[C#] 클래스 기본 (4) | 2016.06.05 |
댓글