interface(C# 참조)interface (C# Reference)

인터페이스에는 메서드, 속성, 이벤트 또는 인덱서의 시그니처만 포함됩니다.An interface contains only the signatures of methods, properties, events or indexers. 인터페이스를 구현하는 클래스나 구조체는 인터페이스 정의에서 지정된 인터페이스 멤버를 구현해야 합니다.A class or struct that implements the interface must implement the members of the interface that are specified in the interface definition. 다음 예제에서 ImplementationClass 클래스는 매개 변수가 없고 void를 반환하는 SampleMethod라는 메서드를 구현해야 합니다.In the following example, class ImplementationClass must implement a method named SampleMethod that has no parameters and returns void.

자세한 내용과 예제는 인터페이스를 참조하세요.For more information and examples, see Interfaces.

Example

interface ISampleInterface
{
    void SampleMethod();
}

class ImplementationClass : ISampleInterface
{
    // Explicit interface member implementation: 
    void ISampleInterface.SampleMethod()
    {
        // Method implementation.
    }

    static void Main()
    {
        // Declare an interface instance.
        ISampleInterface obj = new ImplementationClass();

        // Call the member.
        obj.SampleMethod();
    }
}

인터페이스는 네임스페이스 또는 클래스의 멤버일 수 있으며 다음 멤버의 시그니처를 포함할 수 있습니다.An interface can be a member of a namespace or a class and can contain signatures of the following members:

인터페이스는 하나 이상의 기본 인터페이스에서 상속할 수 있습니다.An interface can inherit from one or more base interfaces.

기본 형식 목록에 기본 클래스 및 인터페이스가 포함된 경우 기본 클래스가 목록의 첫 번째 항목이어야 합니다.When a base type list contains a base class and interfaces, the base class must come first in the list.

인터페이스를 구현하는 클래스는 해당 인터페이스의 멤버를 명시적으로 구현할 수 있습니다.A class that implements an interface can explicitly implement members of that interface. 명시적으로 구현된 멤버는 클래스 인스턴스를 통해 액세스할 수 없고 인터페이스 인스턴스를 통해서만 액세스할 수 있습니다.An explicitly implemented member cannot be accessed through a class instance, but only through an instance of the interface.

명시적 인터페이스 구현에 대한 자세한 내용과 코드 예제는 명시적 인터페이스 구현을 참조하세요.For more details and code examples on explicit interface implementation, see Explicit Interface Implementation.

Example

다음 예제에서는 인터페이스의 구현 방법을 보여 줍니다.The following example demonstrates interface implementation. 이 예제에서 인터페이스에는 속성 선언이 포함되어 있고, 클래스에는 구현이 포함되어 있습니다.In this example, the interface contains the property declaration and the class contains the implementation. IPoint를 구현하는 클래스의 모든 인스턴스에는 정수 속성 xy가 있습니다.Any instance of a class that implements IPoint has integer properties x and y.

interface IPoint
{
   // Property signatures:
   int x
   {
      get;
      set;
   }

   int y
   {
      get;
      set;
   }
}

class Point : IPoint
{
   // Fields:
   private int _x;
   private int _y;

   // Constructor:
   public Point(int x, int y)
   {
      _x = x;
      _y = y;
   }

   // Property implementation:
   public int x
   {
      get
      {
         return _x;
      }

      set
      {
         _x = value;
      }
   }

   public int y
   {
      get
      {
         return _y;
      }
      set
      {
         _y = value;
      }
   }
}

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

C# 언어 사양C# Language Specification

자세한 내용은 C# 언어 사양을 참조하세요.For more information, see the C# Language Specification. C# 언어 사양은 C# 구문 및 사용법에 대한 신뢰할 수 있는 소스입니다.The language specification is the definitive source for C# syntax and usage.

참고 항목See Also

C# 참조C# Reference
C# 프로그래밍 가이드C# Programming Guide
C# 키워드C# Keywords
참조 형식Reference Types
인터페이스Interfaces
속성 사용Using Properties
인덱서 사용Using Indexers
classclass
structstruct
인터페이스Interfaces