일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- jquery
- 카카오헤어샵
- 토렌트
- 맛집
- 티스토리
- 국정화 반대
- 동적쿼리
- 국정화
- 함수
- 트레커
- Google Map
- db
- C#
- MSsql
- 최신트래커
- 트래커
- 술안주
- javascript
- 박근혜 탄핵
- 재테크
- 초대장
- 하남맛집
- 하남
- 파리바게트 청라 SK점
- 카카오가 찾아준 헤어샵
- 신장사거리
- .net
- Lock
- 내장함수
- 파리바게트
Archives
- Today
- Total
featur
[.net] c# interface 인터페이스 본문
https://msdn.microsoft.com/ko-kr/library/ms173156.aspx
인터페이스(C# 프로그래밍 가이드)
c# interface
IEquatable<T> 인터페이스를 구현하는 모든 클래스 또는 구조체는, 인터페이스가 지정하는 기호와 일치하는 Equals 메서드에 대한 정의를 포함해야 합니다. 따라서 IEquatable<T>을 구현하는 클래스를 계산하여 클래스의 인스턴스에서 동일한 클래스의 다른 인스턴스와 동일한지 여부를 확인할 수 있는 Equals 메서드를 포함할 수 있습니다.
IEquatable<T>의 정의에서는 Equals에 대한 구현을 제공하지 않습니다. 인터페이스는 서명만 정의합니다. 이런 방식으로 C#의 인터페이스는 모든 메서드가 추상인 추상 클래스와 유사합니다. 그러나 클래스 또는 구조체는 여러 인터페이스를 구현할 수 있지만 클래스는 추상인지 여부에 관계없이 단일 클래스만 상속할 수 있습니다. 따라서 인터페이스를 사용하여 여러 소스의 동작을 클래스에 포함할 수 있습니다.
추상 클래스에 대한 자세한 내용은 추상 및 봉인 클래스와 클래스 멤버를 참조하십시오.
인터페이스에는 메서드, 속성, 이벤트, 인덱서 또는 이러한 네 가지 멤버 형식의 조합이 포함될 수 있습니다. 예제에 대한 링크는 관련 단원을 참조하세요. 인터페이스에는 상수, 필드, 연산자, 인스턴스 생성자, 소멸자 또는 형식이 포함될 수 없습니다. 인터페이스 멤버는 자동으로 공용이 되며 액세스 한정자를 포함할 수 없습니다. 또한 멤버를 정적으로도 선언할 수 없습니다.
인터페이스 멤버를 구현하려면 구현 클래스의 해당 멤버가 공용이고 비정적이어야 하며 인터페이스 멤버와 동일한 이름 및 서명을 사용해야 합니다.
클래스 또는 구조체에서 인터페이스를 구현하는 경우 인터페이스에서 정의하는 모든 멤버에 대해 구현을 제공해야 합니다. 인터페이스 자체는 클래스 또는 구조체에서 기본 클래스 기능을 상속하는 방식으로 상속할 수 있는 기능을 제공하지 않습니다. 그러나 기본 클래스에서 인터페이스를 구현하는 경우에는 기본 클래스에서 파생되는 모든 클래스가 해당 구현을 상속합니다.
다음 예제는 IEquatable<T> 인터페이스의 한 가지 구현을 보여줍니다.
구현하려는 Car 클래스는 Equals 메서드의 구현을 제공해야 합니다.
구현하려는 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 및 set 접근자를 둘 다 사용하는 동일한 속성을 선언할 수 있습니다.
그러나 속성 또는 인덱서에서 명시적 구현을 사용하는 경우에는 접근자가 일치해야 합니다.
명시적 구현에 대한 자세한 내용은 명시적 인터페이스 구현(C# 프로그래밍 가이드) 및 인터페이스 속성(C# 프로그래밍 가이드)을 참조하세요.
인터페이스는 다른 인터페이스를 구현할 수 있습니다.클래스는 상속하는 기본 클래스 또는 다른 인터페이스에서 구현하는 인터페이스를 통해 인터페이스를 여러 번 포함할 수 있습니다.
그러나 클래스는 인터페이스의 구현을 한 번만 제공할 수 있으며 클래스가 인터페이스를 클래스 정의의 일부로 선언하는 경우에만 제공할 수 있습니다(class ClassName : InterfaceName).
인터페이스를 구현하는 기본 클래스를 상속했기 때문에 인터페이스가 상속되는 경우 기본 클래스는 인터페이스 멤버의 구현을 제공합니다.
그러나 파생 클래스는 상속된 구현을 사용하는 대신 인터페이스 멤버를 다시 구현할 수 있습니다. 또한 기본 클래스는 가상 멤버를 사용하여 인터페이스 멤버를 구현할 수 있습니다.
이 경우 파생 클래스는 가상 멤버를 재정의하여 인터페이스 동작을 변경할 수 있습니다. 가상 멤버에 대한 자세한 내용은 다형성을 참조하세요.
-
인터페이스는 추상 기본 클래스와 같습니다. 인터페이스를 구현하는 모든 클래스 또는 구조체는 모든 멤버를 구현해야 합니다. -
인터페이스는 직접 인스턴스화할 수 없습니다. 해당 멤버는 인터페이스를 구현하는 클래스 또는 구조체에 의해 구현됩니다. -
인터페이스는 이벤트, 인덱서, 메서드 및 속성을 포함할 수 있습니다. -
인터페이스에는 메서드의 구현이 포함되지 않습니다. -
클래스 또는 구조체는 여러 인터페이스를 구현할 수 있습니다. 클래스는 기본 클래스를 상속할 수 있으며 하나 이상의 인터페이스를 제공할 수도 있습니다.
'개발 > .NET' 카테고리의 다른 글
.NET Framework 4.0 내용 (0) | 2015.11.27 |
---|---|
객채 지향 프로그래밍 OOP (0) | 2015.11.26 |
[.net] VS visual studio 단축키 (0) | 2015.11.04 |
[.net] c# Dictionary 사용법 (0) | 2015.11.04 |
[.net] C# 보안 권장 사항 (0) | 2015.11.04 |
Comments