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 In Out . 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, vagyEnd 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ő egyFriend
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 tagokhozvarAsClass
keresztül fér hozzá, azSub
eljárásdoSomething
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ó thisInterface
osztályban jelennek meg.