인터페이스(interface)
인터페이스는 구현에 대한 정의를 표현하는 예약어로 정의에 대한 공통된 구현을 할 때 사용된다.
기능에 대한 추상화를 제공하는것을 목적으로 한다.
비슷한 추상클래스와 인터페이스를 비교 하면 다음과 같다.
인터페이스(interface) | 추상클래스(abstract class) | |
접근지정자 | -기본적으로 public -함수에 대한 접근 지정자를 가질수 없다. |
-함수에 대한 접근 지정자를 가질 수 있다. |
구현 | -구현에 대한건 기술할수 없다. | -구현 제공 가능 |
속도 | -상대적으로 느림 | -상대적으로 바름 |
메소드 | -추상메소드만 가능 | -추상메소드, 추상메소드 말고도 가능 |
필드 | -필드를 가질수 없음 | -필드 및 상수 정의 가능 |
제약 | -선언된 메소드에 필수로 구성 | -필수로 구성하지 않아도 됨. |
사용방법은 다음과 같다.
public interface INamed
{
public string Name {get; set;}
}
예시 코드는 다음과 같다.
interface IPoint
{
// Property signatures:
int X
{
get;
set;
}
int Y
{
get;
set;
}
double Distance
{
get;
}
}
class Point : IPoint
{
// Constructor:
public Point(int x, int y)
{
X = x;
Y = y;
}
// Property implementation:
public int X { get; set; }
public int Y { get; set; }
// Property implementation
public double Distance =>
Math.Sqrt(X * X + Y * Y);
}
class MainClass
{
static void PrintPoint(IPoint p)
{
Console.WriteLine("x={0}, y={1}", p.X, p.Y);
}
static void Main()
{
IPoint p = new Point(2, 3);
Console.Write("My Point: ");
PrintPoint(p);
}
}
// Output: My Point: x=2, y=3
예시 코드를 설명하면 간단하게 IPoint라는 인터페이스로 X, Y, Distance를 추상화하고
Point class에서 인터페이스(IPoint)를 상속받는다. 그리고 해당 추상화 메소드를 구현부를 기술한다.
Main Class에서 해당 값을 확인한다.
Microsoft Doc : [링크]
★★☆☆☆
반응형
'개발 > 기본) 기본기' 카테고리의 다른 글
기본기)List Loop in remove elements (0) | 2021.02.06 |
---|---|
기본기)c#) Nullable 값 형식 ( ? 연산자) (0) | 2021.02.02 |
기본기)Lazy <T> 클래스 (2) | 2021.01.07 |
기본기)c#) 문자열 보간 (특수문자$) (4) | 2021.01.04 |
기본기)DFD(Data Following Diagram) (0) | 2020.11.16 |
댓글