인터페이스의 이름을 선언하고 인터페이스가 구성하는 멤버의 정의를 소개합니다.
문법
[ <attributelist> ] [ accessmodifier ] [ Shadows ] _
Interface name [ ( Of typelist ) ]
[ Inherits interfacenames ]
[ [ modifiers ] Property membername ]
[ [ modifiers ] Function membername ]
[ [ modifiers ] Sub membername ]
[ [ modifiers ] Event membername ]
[ [ modifiers ] Interface membername ]
[ [ modifiers ] Class membername ]
[ [ modifiers ] Structure membername ]
End Interface
부분
| 기간 | 정의 |
|---|---|
attributelist |
선택 사항입니다. 특성 목록을 참조하세요. |
accessmodifier |
선택 사항입니다. 다음 중 하나일 수 있습니다. - 공공의 - 보호 - 친구 - 민간의 - 보호된 친구 - 프라이빗 보호됨 Visual Basic의 액세스 수준을 참조하세요. |
Shadows |
선택 사항입니다. Shadows를 참조하세요. |
name |
필수 사항입니다. 이 인터페이스의 이름입니다. 선언된 요소 이름을 참조하세요. |
Of |
선택 사항입니다. 제네릭 인터페이스임을 지정합니다. |
typelist |
Of 키워드를 사용하는 경우 필수입니다. 이 인터페이스의 형식 매개 변수 목록입니다. 필요에 따라 각 형식 매개 변수는 사용 및 Out 제네릭 한정자를 사용하여 In 변형으로 선언할 수 있습니다.
형식 목록을 참조하세요. |
Inherits |
선택 사항입니다. 이 인터페이스가 다른 인터페이스 또는 인터페이스의 특성과 멤버를 상속한다는 것을 나타냅니다. Inherits 문을 참조하세요. |
interfacenames |
문을 사용하는 경우 필수입니다 Inherits . 이 인터페이스가 파생되는 인터페이스의 이름입니다. |
modifiers |
선택 사항입니다. 정의되는 인터페이스 멤버에 대한 적절한 한정자입니다. |
Property |
선택 사항입니다. 인터페이스의 멤버인 속성을 정의합니다. |
Function |
선택 사항입니다. 인터페이스의 Function 멤버인 프로시저를 정의합니다. |
Sub |
선택 사항입니다. 인터페이스의 Sub 멤버인 프로시저를 정의합니다. |
Event |
선택 사항입니다. 인터페이스의 멤버인 이벤트를 정의합니다. |
Interface |
선택 사항입니다. 이 인터페이스 내에 중첩된 인터페이스를 정의합니다. 중첩된 인터페이스 정의는 문으로 End Interface 종료되어야 합니다. |
Class |
선택 사항입니다. 인터페이스의 멤버인 클래스를 정의합니다. 멤버 클래스 정의는 문으로 End Class 종료해야 합니다. |
Structure |
선택 사항입니다. 인터페이스의 멤버인 구조를 정의합니다. 멤버 구조 정의는 문으로 End Structure 종료해야 합니다. |
membername |
인터페이스의 멤버로 정의된 각 속성, 프로시저, 이벤트, 인터페이스, 클래스 또는 구조체에 필요합니다. 멤버의 이름입니다. |
End Interface |
정의를 종료합니다 Interface . |
비고
인터페이스는 클래스 및 구조체가 구현할 수 있는 속성 및 프로시저와 같은 멤버 집합을 정의합니다. 인터페이스는 멤버의 서명만 정의하고 내부 작업은 정의하지 않습니다.
클래스 또는 구조체는 인터페이스에서 정의한 모든 멤버에 대한 코드를 제공하여 인터페이스를 구현합니다. 마지막으로 애플리케이션이 해당 클래스 또는 구조체에서 인스턴스를 만들면 개체가 존재하고 메모리에서 실행됩니다. 자세한 내용은 개체 및 클래스 및인터페이스를 참조하세요.
네임스페이스 또는 모듈 수준에서만 사용할 Interface 수 있습니다. 즉, 인터페이스의 선언 컨텍스트 는 원본 파일, 네임스페이스, 클래스, 구조체, 모듈 또는 인터페이스여야 하며 프로시저 또는 블록이 될 수 없습니다. 자세한 내용은 선언 컨텍스트 및 기본 액세스 수준을 참조하세요.
인터페이스는 기본적으로 Friend 액세스로 설정됩니다. 액세스 한정자를 사용하여 액세스 수준을 조정할 수 있습니다. 자세한 내용은 Visual Basic의 액세스 수준을 참조하세요.
규칙
중첩 인터페이스. 다른 인터페이스 내에서 한 인터페이스를 정의할 수 있습니다. 외부 인터페이스를 포함하는 인터페이스라고 하며 내부 인터페이스를 중첩된 인터페이스라고합니다.
멤버 선언입니다. 속성 또는 프로시저를 인터페이스의 멤버로 선언하는 경우 해당 속성 또는 프로시저의 서명 만 정의합니다. 여기에는 요소 형식(속성 또는 프로시저), 해당 매개 변수 및 매개 변수 형식 및 반환 형식이 포함됩니다. 이 때문에 멤버 정의는 한 줄의 코드만 사용하고 인터페이스에서 유효하지 않은
End Property경우와 같은End Function종료 문을 사용합니다.반면 열거형 또는 구조체 또는 중첩 클래스 또는 인터페이스를 정의하는 경우 해당 데이터 멤버를 포함해야 합니다.
멤버 한정자입니다. 모듈 멤버를 정의할 때는 액세스 한정자를 사용할 수 없으며, 오버로드를 제외한 공유 또는 프로시저 한정자를 지정할 수도 없습니다. 그림자를 사용하여 멤버를 선언할 수 있으며, ReadOnly 또는 WriteOnly뿐만 아니라 속성을 정의할 때 Default를 사용할 수 있습니다.
상속. 인터페이스에서 Inherits 문을 사용하는 경우 하나 이상의 기본 인터페이스를 지정할 수 있습니다. 두 인터페이스가 각각 같은 이름의 멤버를 정의하는 경우에도 두 인터페이스에서 상속할 수 있습니다. 이 경우 구현 코드는 이름 한정을 사용하여 구현할 멤버를 지정해야 합니다.
인터페이스는 더 제한적인 액세스 수준을 가진 다른 인터페이스에서 상속할 수 없습니다. 예를 들어 인터페이스는
Public인터페이스에서 상속할Friend수 없습니다.인터페이스는 그 안에 중첩된 인터페이스에서 상속할 수 없습니다.
구현. 클래스가 Implements 문을 사용하여 이 인터페이스를 구현하는 경우 인터페이스 내에 정의된 모든 멤버를 구현해야 합니다. 또한 구현 코드의 각 서명은 이 인터페이스에 정의된 해당 서명과 정확히 일치해야 합니다. 그러나 구현 코드의 멤버 이름은 인터페이스에 정의된 멤버 이름과 일치할 필요가 없습니다.
클래스가 프로시저를 구현하는 경우 프로시저
Shared를 로 지정할 수 없습니다.기본 속성입니다. 인터페이스는 속성 이름을 사용하지 않고 참조할 수 있는 최대 하나의 속성을 기본 속성으로 지정할 수 있습니다. 기본 한정자를 사용하여 선언하여 이러한 속성을 지정합니다.
즉, 인터페이스는 기본 속성을 상속하지 않는 경우에만 정의할 수 있습니다.
행동
액세스 수준입니다. 모든 인터페이스 멤버는 암시적으로 공용 액세스 권한을 갖습니다. 멤버를 정의할 때는 액세스 한정자를 사용할 수 없습니다. 그러나 인터페이스를 구현하는 클래스는 구현된 각 멤버에 대한 액세스 수준을 선언할 수 있습니다.
클래스 인스턴스를 변수에 할당하는 경우 해당 멤버의 액세스 수준은 변수의 데이터 형식이 기본 인터페이스인지 구현 클래스인지에 따라 달라질 수 있습니다. 다음 예제에서는 이를 보여 줍니다.
Public Interface IDemo Sub DoSomething() End Interface Public Class implementIDemo Implements IDemo Private Sub DoSomething() Implements IDemo.DoSomething End Sub End Class Dim varAsInterface As IDemo = New implementIDemo() Dim varAsClass As implementIDemo = New implementIDemo()클래스 멤버를 통해
varAsInterface액세스하는 경우 모두 공용 액세스 권한이 있습니다. 그러나 멤버를 통해varAsClass액세스하는 경우 프로시저doSomething에Sub프라이빗 액세스 권한이 있습니다.범위 인터페이스는 네임스페이스, 클래스, 구조 또는 모듈 전체의 범위에 있습니다.
모든 인터페이스 멤버의 범위는 전체 인터페이스입니다.
평생. 인터페이스 자체에는 수명이 없으며 해당 멤버도 없습니다. 클래스가 인터페이스를 구현하고 개체가 해당 클래스의 인스턴스로 만들어지면 개체는 실행 중인 애플리케이션 내에서 수명을 줍니다. 자세한 내용은 클래스 문의 "수명"을 참조하세요.
예시
다음 예제에서는 문을 사용하여 Interface 문 및 문으로 구현해야 하는 명명 thisInterface된 인터페이스를 PropertyFunction 정의합니다.
Public Interface thisInterface
Property ThisProp(ByVal thisStr As String) As Char
Function ThisFunc(ByVal thisInt As Integer) As Integer
End Interface
및 Function 문은 Property 인터페이스 내에서 끝나는 End PropertyEnd Function 블록을 도입하지 않습니다. 인터페이스는 멤버의 서명만 정의합니다. 전체 Property 및 Function 블록은 구현 thisInterface하는 클래스에 나타납니다.
참고하십시오
.NET