인터페이스(C# 프로그래밍 가이드)
그룹 관련된 기능에 대 한 정의 인터페이스를 포함 하는 클래스 또는 구조체 를 구현할 수 있습니다.
인터페이스를 사용 하 여 클래스에서 여러 소스의 동작 예를 들어, 포함할 수 있습니다.언어 클래스의 다중 상속을 지원 하지 않으므로 해당 기능 C# 중요 합니다.또한 해당 구조체 또는 클래스에서 실제로 상속할 수 없으므로 구조체에 대 한 상속 시뮬레이션 하려는 경우 인터페이스를 사용 해야 합니다.
사용 하 여 인터페이스 정의 인터페이스 다음 예제와 같이 키워드.
interface IEquatable<T>
{
bool Equals(T obj);
}
모든 클래스 또는 구현 하는 구조체는 IEquatable<T> 인터페이스에 대 한 정의가 포함 되어야는 Equals 인터페이스의 지정 된 시그니처와 일치 하는 메서드.결과적으로 구현 하는 클래스에서 믿을 수 IEquatable<T> 를 포함 하는 Equals 메서드가 클래스의 인스턴스를 확인할 것에 동일한 클래스의 다른 인스턴스가 같은지 여부를 수 있습니다.
정의의 IEquatable<T> 에 대 한 구현을 제공 하지 않는 Equals.인터페이스의 서명만을 정의합니다.즉, 인터페이스에 C# 모든 메서드가 추상 하는 추상 클래스에 비슷합니다.그러나 클래스 또는 구조체는 여러 인터페이스를 구현할 수 있지만 클래스는 단일 클래스를 추상 여부를 상속할 수 있습니다.따라서 인터페이스를 사용 하 여 사용자 클래스에서 동작 하는 여러 소스에서 포함할 수 있습니다.
추상 클래스에 대 한 자세한 내용은 추상 및 봉인 클래스와 클래스 멤버.
인터페이스는 메서드, 속성, 이벤트, 인덱서 또는 이러한 네 가지 멤버 형식의 조합을 포함할 수 있습니다.예제에 대 한 링크를 참조 하십시오. 관련 단원.인터페이스는 상수, 필드, 연산자, 인스턴스 생성자, 소멸자 또는 형식을 포함할 수 없습니다.인터페이스 멤버는 자동으로 공개 되며 액세스 한정자를 포함할 수 없습니다.구성원을 또한 수 없습니다 정적.
인터페이스 멤버를 구현 하려면 구현 하는 클래스의 해당 멤버 공개, 정적이 아닌 고 이름과 시그니처가 인터페이스 멤버.
클래스 또는 구조체가 인터페이스를 구현 하는 경우 클래스 또는 구조체 구현을 모든 인터페이스를 정의 하는 멤버를 제공 해야 합니다.인터페이스 자체 기본 클래스의 기능을 상속할 수 있음을 클래스 또는 구조체는 상속할 수 없음 기능을 제공 합니다.그러나 기본 클래스에서 인터페이스를 구현 하는 경우 기본 클래스에서 파생 된 모든 클래스는 해당 구현을 상속.
다음 예제에서는 IEquatable <T>의 구현을 보여 줍니다. 인터페이스입니다.구현 하는 클래스 Car의 구현을 제공 해야 합니다에 Equals 메서드.
public class Car : IEquatable<Car>
{
public string Make {get; set;}
public string Model { get; set; }
public string Year { get; set; }
// Implementation of IEquatable<T> interface
public bool Equals(Car car)
{
if (this.Make == car.Make &&
this.Model == car.Model &&
this.Year == car.Year)
{
return true;
}
else
return false;
}
}
클래스의 인덱서와 속성에서 인터페이스에 정의 된 인덱서 나 속성에 대 한 추가 접근자를 정의할 수 있습니다.인터페이스는 속성을 선언할 수 있습니다 예를 들어,는 get 접근자입니다.인터페이스를 구현 하는 클래스와 모두 동일한 속성을 선언할 수 있습니다는 get 및 설정 접근자입니다.그러나 속성이나 인덱서에 명시적 구현이 사용되는 경우에는 접근자가 일치해야 합니다.명시적으로 구현 하는 방법에 대 한 자세한 내용은 명시적 인터페이스 구현(C# 프로그래밍 가이드) 및 인터페이스 속성(C# 프로그래밍 가이드).
인터페이스는 다른 인터페이스를 구현할 수 있습니다.클래스는 인터페이스 또는 다른 인터페이스를 구현 하는 인터페이스를 통해 상속 하는 기본 클래스 여러 번 포함 될 수 있습니다.그러나 클래스 인터페이스는 클래스 정의의 일부로 선언 하는 경우 클래스 인터페이스 구현 시간 및 유일한 하나만 제공할 수 있습니다 (class ClassName : InterfaceName).인터페이스는 해당 인터페이스를 구현 하는 기본 클래스를 상속 하므로 상속 되 면 기본 클래스 인터페이스 멤버의 구현을 제공 합니다.그러나 파생된 클래스는 상속 된 구현을 사용 하는 대신 인터페이스 멤버를 구현할 수 있습니다.
기본 클래스는 가상 멤버를 사용 하 여 인터페이스 멤버를 구현할 수 있습니다.이 경우 파생된 클래스는 가상 구성원을 재정의하여 인터페이스 동작을 변경할 수 있습니다.가상 멤버에 대한 자세한 내용은 Polymorphism을 참조하십시오.
인터페이스 요약
인터페이스에는 다음과 같은 속성이 있습니다.
인터페이스와 추상 기본 클래스입니다.클래스 또는 구조체는 인터페이스를 구현 하는 모든 멤버를 구현 해야 합니다.
인터페이스는 직접 인스턴스화할 수 없습니다.해당 멤버는 클래스 또는 인터페이스를 구현 하는 구조체에서 구현 됩니다.
인터페이스는 이벤트, 인덱서, 메서드 및 속성을 포함할 수 있습니다.
인터페이스는 메서드의 구현을 포함하지 않습니다.
클래스나 구조체는 여러 인터페이스를 구현할 수 있습니다.클래스는 기본 클래스를 상속 하 고 하나 이상의 인터페이스를 구현할 수도 있습니다.
단원 내용
명시적 인터페이스 구현(C# 프로그래밍 가이드)
인터페이스에 적용 되는 클래스 멤버를 만드는 방법에 설명 합니다.방법: 인터페이스 멤버를 명시적으로 구현(C# 프로그래밍 가이드)
인터페이스의 멤버를 명시적으로 구현하는 방법에 대한 예제를 제공합니다.방법: 두 인터페이스의 멤버를 명시적으로 구현(C# 프로그래밍 가이드)
상속을 통해 인터페이스의 멤버를 명시적으로 구현하는 방법에 대한 예제를 제공합니다.
관련 단원
중요 설명서 장
인터페이스 에서 C# 3.0 학습: C# 3.0의 기본 개념을 마스터