인터페이스는 클래스와 비슷하지만, 메서드, 이벤트, 인덱서, 속성을 클래스에서 가질 수 있는 기능들을 정의하지만, 구현은 하지 않습니다.
구현을 인터페이스를 갖는 클래스에서 반드시 해야합니다.
이렇게 쓰는 이유는 인터페이스 하나만으로 내가 구현부를 알지 못해도 사용이 가능하도록 하고,
이런 기능들이 클래스에서 꼭 사용되야한다고 명시한다고 볼 수도 있습니다.
추상 base 클래스와 매우 유사하지만, 클래스는 다중상속을 지원하지 않지만 인터페이스는 다중 상속을 지원합니다
또한 구조체는 다른 구조체나 클래스를 상속할 수 없지만 인터페이스는 지원합니다.
형식
public interfase 인터페이스명
{
int 메서드이름();
}
구현
인터페이스를 갖는 클래스의 경우 인터페이스에서 정의한 메서드 등을 반드시 구현해야 합니다.
public interface IAAAA
{
void print();
}
public class BBBB : IAAAA
{
public void print()
{
Console.WriteLine("print()");
}
}
인터페이스로 정의를 하면 인터페이스 맴버만 접근이 가능합니다.
public interface IAAAA
{
void print();
}
public class BBBB : IAAAA
{
public void print()
{
Console.WriteLine("print()");
}
public void print2()
{
Console.WriteLine("print()2");
}
}
static void Main(string[] args)
{
IAAAA B1 = new BBBB();
B1.print();
//B1.print2();
}
B1.print2();가 접근이 불가능합니다.
접근이 가능하려면
IAAAA B1 = new BBBB(); 이 부분을 BBBB B1 = new BBBB(); 이렇게 수정하면 됩니다.
'개발공부 > C#' 카테고리의 다른 글
[C#] 스레드(Thread) (0) | 2019.11.04 |
---|---|
[C#]컬렉션(Collections) (0) | 2019.10.31 |
[C#] 배열(Array) (0) | 2019.10.29 |
[C#] String.Format (0) | 2019.10.28 |
[C#] #region (0) | 2019.10.27 |