본문 바로가기
개발/기본) 기본기

기본기)인터페이스(interface)

by 테샤르 2021. 1. 10.

인터페이스(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 : [링크]

 

interface - C# 참조

:::no-loc text=interface:::(C# 참조)

docs.microsoft.com

 

 

반응형

댓글