Felületi utasítás (Visual Basic)

Deklarálja az interfész nevét, és bevezeti azoknak a tagoknak a definícióit, amelyeket az interfész tartalmaz.

Syntax

[ <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  

Részek

Időszak Definíció
attributelist Opcionális. Lásd: Attribútumlista.
accessmodifier Opcionális. A következők egyike lehet:

- Nyilvános
- Védett
- Barátom
- Privát
- Védett barát
- Privát védelem

Lásd a Visual Basic hozzáférési szintjeinek megtekintését.
Shadows Opcionális. Lásd: Árnyékok.
name Szükséges. Ennek a felületnek a neve. Lásd: Deklarált elemnevek.
Of Opcionális. Azt adja meg, hogy ez egy általános felület.
typelist Az Of kulcsszó használata esetén kötelező megadni. A felület típusparamétereinek listája. Opcionálisan az egyes típusparaméterek variánsként deklarálhatók általános módosítók használatával InOut . Lásd: Típuslista.
Inherits Opcionális. Azt jelzi, hogy ez a felület örökli egy másik interfész vagy interfész attribútumait és tagjait. Lásd: Öröklési utasítás.
interfacenames Az utasítás használata Inherits esetén kötelező megadni. Azoknak a felületeknek a neve, amelyekből ez a felület származik.
modifiers Opcionális. A definiált felülettag megfelelő módosítói.
Property Opcionális. Olyan tulajdonságot határoz meg, amely a felület tagja.
Function Opcionális. Function Olyan eljárást határoz meg, amely a felület tagja.
Sub Opcionális. Sub Olyan eljárást határoz meg, amely a felület tagja.
Event Opcionális. Olyan eseményt határoz meg, amely a felület tagja.
Interface Opcionális. Az ezen a felületen belül beágyazott felületet határoz meg. A beágyazott felület definíciójának utasítással End Interface kell végződnie.
Class Opcionális. Definiál egy osztályt, amely a felület tagja. A tagosztály definíciójának utasítással End Class kell végződnie.
Structure Opcionális. Olyan struktúrát határoz meg, amely a felület tagja. A tagstruktúra definíciójának utasítással End Structure kell végződnie.
membername Kötelező minden olyan tulajdonsághoz, eljáráshoz, eseményhez, felülethez, osztályhoz vagy struktúrához, amely a felület tagjaként van meghatározva. A tag neve.
End Interface Leállítja a definíciót Interface .

Megjegyzések

Az interfész meghatározza a tagok egy csoportját, például tulajdonságokat és eljárásokat, amelyeket az osztályok és struktúrák implementálhatnak. A felület csak a tagok aláírását határozza meg, a belső működésüket nem.

Egy osztály vagy struktúra úgy valósítja meg az interfészt, hogy az interfész által meghatározott minden taghoz megad kódot. Végül, amikor az alkalmazás létrehoz egy példányt az adott osztályból vagy struktúrából, egy objektum létezik és fut a memóriában. További információ: Objektumok, osztályok és felületek.

Csak névtér- vagy modulszinten használható Interface . Ez azt jelenti, hogy az interfész deklarációs környezetének forrásfájlnak, névtérnek, osztálynak, struktúrának, modulnak vagy interfésznek kell lennie, és nem lehet eljárás vagy blokk. További információ: Deklarációs környezetek és alapértelmezett hozzáférési szintek.

A barátokhoz való hozzáférés alapértelmezett felületei. A hozzáférési szinteket a hozzáférési módosítókkal módosíthatja. További információ: Hozzáférési szintek a Visual Basicben.

Szabályok

  • Beágyazott felületek. Az egyik felületet definiálhatja egy másikon belül. A külső illesztőt tartalmazó felületnek nevezzük, a belső felületet pedig beágyazott felületnek.

  • Tagi nyilatkozat. Amikor egy tulajdonságot vagy eljárást egy felület tagjaként deklarál, csak az adott tulajdonság vagy eljárás aláírását határozza meg. Ide tartozik az elem típusa (tulajdonság vagy eljárás), paraméterei és paramétertípusai, valamint visszatérési típusa. Emiatt a tagdefiníció csak egy kódsort használ, és olyan utasításokat ad meg, mint például End Function egy interfész, vagy End Property nem érvényes.

    Ezzel szemben enumerálás vagy struktúra, beágyazott osztály vagy felület definiálásakor az adattagokat is be kell vonni.

  • Tag módosítók. A modultagok definiálásakor nem használhat hozzáférési módosítókat, és a Túlterhelések kivételével nem adhat meg megosztott vagy eljárásmódosítót. Bármelyik tagot deklarálhatja árnyékolással, és az Alapértelmezett beállítást is használhatja egy tulajdonság, valamint a ReadOnly vagy a WriteOnly definiálásakor.

  • Öröklési. Ha a felület az Öröklési utasítást használja, megadhat egy vagy több alapillesztőt. Két felületről akkor is örökölhet, ha mindegyik azonos nevű tagot definiál. Ha így tesz, a implementálási kódnak névminősítést kell használnia annak meghatározásához, hogy melyik tagot implementálja.

    Egy felület nem örökölhető egy szigorúbb hozzáférési szinttel rendelkező másik adaptertől. Egy illesztő Public például nem örökölhető egy Friend interfésztől.

    Az illesztő nem örökölhető a benne beágyazott illesztőtől.

  • Végrehajtása. Amikor egy osztály az Implements utasítást használja az interfész implementálásához, a felületen belül definiált összes tagot implementálnia kell. Ezenkívül a implementálási kód minden aláírásának pontosan meg kell egyeznie az ezen a felületen meghatározott aláírással. A implementálási kódban szereplő tag nevének azonban nem kell egyeznie a felületen meghatározott tagnévvel.

    Amikor egy osztály egy eljárást implementál, nem jelölheti meg az eljárást Shared.

  • Alapértelmezett tulajdonság. Az illesztő legfeljebb egy tulajdonságot adhat meg alapértelmezett tulajdonságként, amelyre a tulajdonságnév használata nélkül hivatkozhat. Ezt a tulajdonságot az Alapértelmezett módosítóval deklarálva adhatja meg.

    Figyelje meg, hogy ez azt jelenti, hogy egy felület csak akkor definiálhat alapértelmezett tulajdonságot, ha egyiket sem örökli.

Működés

  • Hozzáférési szint. Minden felülettag implicit módon nyilvános hozzáféréssel rendelkezik. Tag definiálásakor nem használhat hozzáférés-módosítót. Az interfészt implementáló osztály azonban minden implementált taghoz megadhat hozzáférési szintet.

    Ha osztálypéldányt rendel egy változóhoz, a tagok hozzáférési szintje attól függ, hogy a változó adattípusa az alapul szolgáló felület vagy a implementáló osztály. Az alábbi példa ezt szemlélteti.

    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()
    

    Ha az osztálytagokat keresztül éri el varAsInterface, azok nyilvános hozzáféréssel rendelkeznek. Ha azonban a tagokhoz varAsClasskeresztül fér hozzá, az Sub eljárás doSomething privát hozzáféréssel rendelkezik.

  • Hatály. Az interfész a teljes névtérben, osztályban, struktúrában vagy modulban hatókörben van.

    Minden felülettag hatóköre a teljes felület.

  • Élettartam. Egy felületnek nincs élettartama, és tagjai sem. Amikor egy osztály megvalósít egy felületet, és az objektum az adott osztály példányaként jön létre, az objektum élettartama abban az alkalmazásban van, amelyben fut. További információ: "Élettartam" az Osztálykimutatásban.

Példa

Az alábbi példa az Interface utasítással definiál egy interfészt thisInterface, amelyet utasítással Property és Function utasítással kell implementálni.

Public Interface thisInterface
    Property ThisProp(ByVal thisStr As String) As Char
    Function ThisFunc(ByVal thisInt As Integer) As Integer
End Interface

Vegye figyelembe, hogy az és Function az Property utasítások nem vezetnek be blokkokat végződikEnd Property, és End Function az interfészen belül. A felület csak a tagok aláírását határozza meg. A teljes Property és Function a blokkok egy implementálható thisInterfaceosztályban jelennek meg.

Lásd még