인터페이스(C# 프로그래밍 가이드)
그룹 관련된 기능에 대 한 정의 인터페이스를 포함 하는 클래스 또는 구조체 를 구현할 수 있습니다.
인터페이스를 사용 하 여 클래스에서 여러 소스의 동작 예를 들어, 포함할 수 있습니다. 언어 클래스의 다중 상속을 지원 하지 않으므로 해당 기능 C# 중요 합니다. 또한 해당 구조체 또는 클래스에서 실제로 상속할 수 없으므로 구조체에 대 한 상속 시뮬레이션 하려는 경우 인터페이스를 사용 해야 합니다.
사용 하 여 인터페이스 정의 인터페이스 다음 예제와 같이 키워드.
interface IEquatable<T>
{
bool Equals(T obj);
}
모든 클래스 또는 구현 하는 구조체는 IEquatable 인터페이스에 대 한 정의가 포함 되어야는 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의 기본 개념을 마스터