C \ # 인터페이스 프로 그래 밍 의 정의 인터페이스 전면 분석
[attributes] [modifiers] interface identifier [:base-list] {interface-body}[;]
설명: · attributes (선택 가능): 추가 적 인 정의 정보.modifiers (선택 가능): 사용 할 수 있 는 수정자 에는 new 와 네 개의 접근 수정자 가 있 습 니 다.각각 new, public, proctected, internal, private.하나의 인터페이스 정의 에서 같은 수정자 가 여러 번 나타 나 는 것 을 허용 하지 않 습 니 다. new 수정자 는 내장 인터페이스 에 만 나타 나 계승 한 동명 의 구성원 을 덮어 쓰 는 것 을 표시 합 니 다.The public, proctected, internal, and private 수정자 가 인터페이스 에 대한 접근 권한 을 정의 합 니 다.인디케이터 와 이벤트.identifier: 인터페이스 이름.base - list (선택 가능): 하나 이상 의 명시 적 기본 인 터 페 이 스 를 포함 하 는 목록 입 니 다. 인터페이스 간 은 쉼표 로 구 분 됩 니 다.인터페이스 - body: 인터페이스 구성원 에 대한 정의.인 터 페 이 스 는 네 임 스페이스 나 클래스 의 구성원 일 수 있 으 며 다음 구성원 의 서명 을 포함 할 수 있 습 니 다: 방법, 속성, 색인 기.하나의 인 터 페 이 스 는 하나 이상 의 기본 인터페이스 에서 계승 할 수 있다.인터페이스 라 는 개념 은 C \ # 자바 와 매우 비슷 하 다.인터페이스의 키 워드 는 interface 입 니 다. 하나의 인 터 페 이 스 는 하나 이상 의 다른 인 터 페 이 스 를 확장 할 수 있 습 니 다.관례 에 따 르 면 인터페이스의 이름 은 대문자 'I' 로 시작한다.다음 코드 는 C \ # 인터페이스의 한 예 입 니 다. 자바 의 인터페이스 와 똑 같 습 니 다.
interface IShape {
void Draw ( ) ;
}
두 개 이상 의 인터페이스 에서 파생 되면 부모 인터페이스의 이름 목록 은 쉼표 로 구 분 됩 니 다. 아래 코드 와 같 습 니 다.
interface INewInterface: IParent1, IParent2 { }
그러나 자바 와 달리 C \ # 의 인 터 페 이 스 는 도 메 인 (Field) 을 포함 할 수 없습니다.또한 C \ # 에서 인터페이스 안의 모든 방법 은 기본적으로 공용 방법 임 을 주의해 야 한다.자바 에서 방법 정 의 는 Public 수정자 (필요 하지 않 더 라 도) 를 가 질 수 있 지만 C \ # 에서 인터페이스 로 표시 하 는 방법 으로 Public 수정자 를 지정 하 는 것 은 불법 입 니 다.예 를 들 어 아래 의 C \ # 인 터 페 이 스 는 컴 파일 오류 가 발생 합 니 다.
interface IShape { public void Draw( ) ; }
다음 예 는 IControl 이라는 인 터 페 이 스 를 정의 합 니 다. 인터페이스 에는 구성원 방법 Paint 가 포함 되 어 있 습 니 다.
interface IControl {
void Paint( ) ;
}
다음 예 에서 인터페이스 IInterface 는 두 개의 기본 인터페이스 인 IBase 1 과 IBase 2 에서 계승 합 니 다.
interface IInterface: IBase1, IBase2 {
void Method1( ) ;
void Method2( ) ;
}
인 터 페 이 스 는 클래스 에 의 해 실 현 될 수 있다.실 현 된 인터페이스의 식별 자 는 클래스 의 기본 목록 에 나타 납 니 다.예 를 들 면:
class Class1: Iface1, Iface2 {
// class 。
}
클래스 의 기본 목록 이 기본 클래스 와 인 터 페 이 스 를 동시에 포함 할 때 목록 에 먼저 나타 나 는 것 은 기본 클래스 입 니 다.예 를 들 면:
class ClassA: BaseClass, Iface1, Iface2 {
// class 。
}
다음 코드 세그먼트 정의 인터페이스 IFace 는 하나의 방법 만 있 습 니 다.
interface IFace {
void ShowMyFace( ) ;
}
이 정의 에서 대상 을 예화 할 수 는 없 지만, 그것 에서 하나의 종 류 를 파생 시 킬 수 있다.따라서 이 종 류 는 쇼 마 이 페 이 스 추상 적 인 방법 을 실현 해 야 한다.
class CFace:IFace
{
public void ShowMyFace( ) {
Console.WriteLine(" implementation " ) ;
}
}
기본 인 터 페 이 스 는 0 개 이상 의 인터페이스 에서 계승 할 수 있 으 며, 이 인터페이스 라 고 불 리 는 명시 적 인 인터페이스 이다.인터페이스 에 0 보다 많은 디 스 플레이 기반 인터페이스 가 있 을 때 인터페이스의 정의 형식 은 인터페이스 식별 자 뒤에 가짜 ':' 쉼표 로 ',' 분 리 된 기본 인터페이스 식별 자 목록 '이다.인터페이스 기반: 인터페이스 형식 목록 설명: · 한 인터페이스의 명시 적 인 인 터 페 이 스 는 적어도 인터페이스 자체 와 같이 접근 할 수 있어 야 합 니 다.예 를 들 어 공공 인터페이스의 기본 인터페이스 에서 개인 또는 내부 인 터 페 이 스 를 지정 하 는 것 은 잘못 되 었 습 니 다.인터페이스 가 직접적 이거 나 간접 적 으로 그것 으로 부터 물 려 받 는 것 은 잘못된 것 이다.인터페이스의 기본 인 터 페 이 스 는 모두 명시 적 인 기본 인터페이스 이 고 그들의 기본 인터페이스 이다.다시 말 하면 기 인터페이스의 집합 은 완전히 현식 기 인터페이스 와 그들의 현식 기 인터페이스 등 으로 구성 된다.아래 의 예 에서
interface IControl {
void Paint( ) ;
}
interface ITextBox: IControl {
void SetText(string text) ;
}
interface IListBox: IControl {
void SetItems(string[] items) ;
}
interface IComboBox: ITextBox, IListBox { }
IComboBox 의 기본 인 터 페 이 스 는 IControl, ITextBox, 그리고 IlistBox 입 니 다.인터페이스 가 기본 인 터 페 이 스 를 계승 하 는 모든 구성원다시 말 하면 위의 인터페이스 IComboBox 는 Paint 처럼 멤버 SetText 와 SetItems 를 계승 한 것 이다.인 터 페 이 스 를 실현 하 는 클래스 나 구조 도 모든 인터페이스의 기본 인 터 페 이 스 를 은근히 실현 했다.인터페이스 주체 의 인터페이스 주 체 는 인터페이스의 구성원 을 정의 합 니 다.
interface-body:
{ interface-member-declarationsopt }
인터페이스 구성원 인 터 페 이 스 를 정의 하면 한 명 과 여러 명의 구성원 을 포함 할 수 있 습 니 다. 이 구성원 들 은 방법, 속성, 색인 표시 기와 이벤트 일 수 있 지만 상수, 도 메 인, 연산 자, 구조 함수 또는 석조 함수 일 수 없 으 며 어떠한 정적 구성원 도 포함 할 수 없습니다.인터페이스 정 의 는 새로운 정의 공간 을 만 들 고 인터페이스 정의 에 직접 포 함 된 인터페이스 구성원 정 의 는 새 구성원 을 이 정의 공간 에 도입 합 니 다.설명: 인터페이스의 구성원 은 기본 인터페이스 에서 물 려 받 은 구성원 과 인터페이스 자체 에서 정 의 된 구성원 이다.인터페이스 정 의 는 0 개 이상 의 구성원 을 정의 할 수 있다.인터페이스의 구성원 은 방법, 속성, 이벤트 또는 색인 기 여야 합 니 다.인 터 페 이 스 는 상수, 필드, 연산 자, 인 스 턴 스 구조 함수, 석조 함수 또는 유형 을 포함 할 수 없고 그 어떠한 종류의 정적 구성원 도 포함 할 수 없습니다.인 터 페 이 스 를 정의 합 니 다. 이 인 터 페 이 스 는 모든 가능 한 종류의 구성원 에 게 방법, 속성, 이벤트 와 색인 기 를 포함 합 니 다.인터페이스 구성원 의 기본 접근 방식 은 Public 입 니 다.인터페이스 구성원 정 의 는 구성원 정의 전에 abstract, Public, proctected, internal, private, virtual, override 또는 static 수식 자 를 추가 할 수 없습니다.인터페이스의 구성원 간 에는 서로 동명 이인 이 될 수 없다.계 승 된 구성원 은 더 이상 정의 할 필요 가 없 지만 인 터 페 이 스 는 계 승 된 구성원 과 동명 의 구성원 을 정의 할 수 있다. 이때 우 리 는 인터페이스 구성원 이 계 승 된 구성원 을 덮어 서 오류 가 발생 하지 않 지만 컴 파일 러 는 경 고 를 한다.경고 알림 을 닫 는 방식 은 구성원 정의 전에 new 키 워드 를 추가 하 는 것 입 니 다.그러나 부모 인터페이스 에 있 는 구성원 을 덮어 쓰 지 않 으 면 new 키 워드 를 사용 하면 컴 파일 러 가 경 고 를 보 냅 니 다.방법의 이름 은 같은 인터페이스 에서 정의 하 는 모든 속성 과 이벤트 의 이름과 다 르 게 해 야 합 니 다.또한, 방법의 서명 은 같은 인터페이스 에서 정 의 된 모든 다른 방법의 서명 과 다 르 게 해 야 합 니 다.속성 이나 이벤트 의 이름 은 같은 인터페이스 에서 정 의 된 모든 다른 구성원 의 이름과 다 르 게 해 야 합 니 다.하나의 색인 기의 서명 은 같은 인터페이스 에서 정 의 된 다른 모든 색인 기의 서명 과 구별 되 어야 합 니 다.인터페이스 방법 성명 의 속성 (attributes), 반환 형식 (return - type), 식별 자 (identifier) 와 형식 매개 변수 목록 (formal - parameter - lis) 은 같은 방법 성명 의 의미 가 있 습 니 다.하나의 인터페이스 방법 은 하나의 방법 주 체 를 지정 할 수 없 으 며, 성명 은 보통 하나의 분점 으로 끝난다.인터페이스 속성 성명 의 접근 자 는 클래스 속성 성명 의 접근 자 와 대응 되 며, 접근 자 주 체 를 제외 하고 일반적으로 분 호 를 사용 해 야 합 니 다.따라서 속성 이 읽 기와 쓰기, 읽 기 전용 이 든 쓰기 전용 이 든 접근 부 호 는 완전히 확 정 됩 니 다.인터페이스 색인 성명 의 속성 (attributes), 형식 (type) 과 형식 매개 변수 목록 (formal - parameter - list) 은 클래스 의 색인 성명 과 같은 의 미 를 가진다.다음 예 에서 인터페이스 IMyTest 에는 색인 표시 기, 이벤트 E, 방법 F, 속성 P 등 구성원 이 포함 되 어 있 습 니 다.
interface IMyTest{
string this[int index] { get; set; }
event EventHandler E ;
void F(int value) ;
string P { get; set; }
}
public delegate void EventHandler(object sender, EventArgs e) ;
다음 예 에서 인터페이스 ISTringList 는 모든 가능 한 유형의 구성원 의 인 터 페 이 스 를 포함 합 니 다. 하나의 방법, 하나의 속성, 하나의 이벤트 와 하나의 색인 을 포함 합 니 다.
public delegate void StringListEvent(IStringList sender);
public interface IStringList
{
void Add(string s);
int Count { get; }
event StringListEvent Changed;
string this[int index] { get; set; }
}
인터페이스 구성원 의 전권 명 은 인터페이스 구성원 도 전권 명 (fully qualified name) 을 사용 할 수 있다.인터페이스의 전권 명칭 은 이렇게 구성 되 어 있다.인터페이스 이름 에 작은 원점 을 추가 합 니 다. "그리고 멤버 이름, 예 를 들 어 다음 두 개의 인터페이스 에 대해:
interface IControl {
void Paint( ) ;
}
interface ITextBox: IControl {
void GetText(string text) ;
}
그 중에서 Paint 의 전권 명 은 IControl. Paint 이 고 GetText 의 전권 명 은 ITextBox. GetText 이다.물론 전체 이름 의 구성원 이름 은 인터페이스 에서 정 의 된 것 이 어야 한다. 예 를 들 어 ITextBox. Paint 를 사용 하 는 것 은 불합리 하 다.인터페이스 가 이름 공간의 구성원 이 라면, 전권 명 은 이름 공간의 이름 을 포함해 야 한다.
namespace System
{
public interface IDataTable {
object Clone( ) ;
}
}
그러면 Clone 방법의 전권 명 은 System. IDataTable. Clone 입 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Linux Shell 프로 그래 밍 - 텍스트 처리 grep, sed사용자 가 지정 한 '모드' 에 따라 대상 텍스트 를 일치 하 게 검사 하고 일치 하 는 줄 을 인쇄 합 니 다. ##포함 되 지 않 음, 역방향 일치 \ ##키워드 앞 뒤 가 맞지 않 고 키워드 만 일치 합 니 다...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.