Istruzione Interface (Visual Basic)
Dichiara il nome di un'interfaccia e introduce le definizioni dei membri che essa comprende.
[ <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
Parti
Termine |
Definizione |
attributelist |
Parametro facoltativo.Vedere Elenco degli attributi. |
accessmodifier |
Parametro facoltativo.ad esempio uno dei seguenti: |
Shadows |
Parametro facoltativo.Vedere Shadows. |
name |
Obbligatorio.Nome dell'interfaccia.Per informazioni, vedere Nomi di elementi dichiarati (Visual Basic). |
Of |
Parametro facoltativo.Specifica che si tratta di un'interfaccia generica. |
typelist |
Obbligatorio se si utilizza la parola chiave Clausola Of (Visual Basic).Elenco di parametri di tipo per l'interfaccia.Se lo si desidera, è possibile dichiarare ogni parametro di tipo come variant utilizzando i modificatori generici In e Out.Vedere Elenco dei tipi. |
Inherits |
Parametro facoltativo.Indica che l'interfaccia eredita gli attributi e i membri di un'altra o di altre interfacce.Vedere Istruzione Inherits. |
interfacenames |
Obbligatoria se si utilizza l'istruzione Inherits.Nomi delle interfacce dalle quali deriva lì'interfaccia. |
modifiers |
Parametro facoltativo.Modificatori corretti per il membro dell'interfaccia in corso di definizione. |
Property |
Parametro facoltativo.Definisce una proprietà che è un membro dell'interfaccia. |
Function |
Parametro facoltativo.Definisce una routine Function che è un membro dell'interfaccia. |
Sub |
Parametro facoltativo.Definisce una routine Sub che è un membro dell'interfaccia. |
Event |
Parametro facoltativo.Definisce un evento che è un membro dell'interfaccia. |
Interface |
Parametro facoltativo.Definisce un'interfaccia annidata all'interno di questa interfaccia.La definizione dell'interfaccia annidata deve terminare con un'istruzione End Interface. |
Class |
Parametro facoltativo.Definisce una classe che è un membro dell'interfaccia.La definizione della classe membro deve terminare con un'istruzione End Class. |
Structure |
Parametro facoltativo.Definisce una struttura che è un membro dell'interfaccia.La definizione della struttura membro deve terminare con un'istruzione End Structure. |
membername |
Obbligatorio per ogni proprietà, routine, evento, interfaccia, classe o struttura definita come membro dell'interfaccia.Nome del membro. |
End Interface |
Termina la definizione di Interface. |
Note
Un'interfaccia definisce un insieme di membri, come ad esempio proprietà e routine, che classi e strutture possono implementare.L'interfaccia definisce soltanto le firme dei membri e non il loro funzionamento interno.
Una classe o una struttura implementa l'interfaccia fornendo il codice per ogni membro definito dall'interfaccia.Infine, quando l'applicazione creerà un'istanza da quella classe o struttura, esisterà un oggetto che verrà eseguito in memoria.Per ulteriori informazioni, vedere Oggetti e classi in Visual Basic e Interfacce (Visual Basic).
È possibile utilizzare Interface solo a livello di modulo o di spazio dei nomi.In altri termini, il contesto della dichiarazione per un'interfaccia deve essere costituito da un file di origine, uno spazio dei nomi, una classe, una struttura, un modulo o un'interfaccia, ma non una routine o un blocco.Per ulteriori informazioni, vedere Contesti delle dichiarazioni e livelli di accesso predefiniti (Visual Basic).
L'accesso predefinito per le interfacce è di tipo Friend (Visual Basic).È possibile modificarne i livelli di accesso mediante gli appositi modificatori.Per ulteriori informazioni, vedere Livelli di accesso in Visual Basic.
Regole
Annidamento delle interfacce. È possibile definire un'interfaccia all'interno di un'altra.L'interfaccia esterna viene detta interfaccia contenitore, mentre l'interfaccia interna viene detta interfaccia annidata.
Dichiarazione di membro. Quando si dichiara una proprietà o una routine come membro di un'interfaccia, si definisce soltanto la firma di tale proprietà o routine.Questa comprende il tipo di elemento (proprietà o routine), i suoi parametri e i tipi di parametri e il tipo restituito.Per questa ragione, la definizione del membro utilizza soltanto una riga di codice e le istruzioni di chiusura come End Function o End Property in un'interfaccia non sono valide.
Al contrario, quando si definisce un'enumerazione o una struttura o una classe o un'interfaccia annidata, è necessario includerne i membri dati.
Modificatori di membri. Quando si definiscono i membri dei moduli, non è possibile utilizzare modificatori di accesso, né specificare Shared (Visual Basic) o qualsiasi altro modificatore di routine ad eccezione di Overloads (Visual Basic).È possibile dichiarare qualsiasi membro con Shadows (Visual Basic) e utilizzare Default (Visual Basic), ReadOnly (Visual Basic) o WriteOnly (Visual Basic) nella definizione di una proprietà.
Ereditarietà. Se l'interfaccia utilizza l'Istruzione Inherits, è possibile specificare una o più interfacce di base.È possibile ereditare da due interfacce anche se ognuna di esse definisce un membro con lo stesso nome.In questo caso il codice di implementazione deve utilizzare la qualifica per specificare quale membro sta implementando.
Un'interfaccia non può ereditare da un'altra interfaccia con un livello di accesso più restrittivo.Un'interfaccia Public, ad esempio, non può ereditare da un'interfaccia con accesso Friend.
Un'interfaccia non può ereditare da un'interfaccia annidata all'interno di essa.
Implementazione. Quando una classe utilizza l'istruzione Clausola Implements (Visual Basic) per implementare questa interfaccia, deve implementare ogni membro definito all'interno dell'interfaccia.Ogni firma del codice di implementazione, inoltre, deve corrispondere esattamente alla firma equivalente definita nell'interfaccia.Il nome del membro nel codice di implementazione, tuttavia, non deve corrispondere al nome del membro definito nell'interfaccia.
Quando una classe implementa una routine, quest'ultima non può essere designata come Shared.
Proprietà predefinita. Un'interfaccia può specificare al massimo una proprietà come proprietà predefinita, a cui si può fare riferimento senza utilizzare il nome della proprietà.Questa proprietà viene specificata dichiarandola con il modificatore Default (Visual Basic).
Tenere presente che questo significa che un'interfaccia può definire una proprietà predefinita soltanto se non ne eredita nessuna.
Comportamento
Livello di accesso. Tutti i membri dell'interfaccia devono disporre in modo implicito di accesso di tipo Public (Visual Basic).Quando si definisce un membro non è consentito utilizzare alcun modificatore di accesso.Una classe che implementa l'interfaccia può tuttavia dichiarare un livello di accesso per ciascun membro implementato.
Se si assegna un'istanza di classe a una variabile, il livello di accesso dei suoi membri può essere diverso a seconda che il tipo di dati della variabile sia l'interfaccia sottostante o la classe che la implementa.Questa condizione è illustrata nell'esempio che segue.
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()
Se si accede ai membri della classe attraverso varAsInterface, essi avranno tutti un accesso di tipo Public.Se invece si accede ai membri attraverso varAsClass, la routine SubdoSomething è caratterizzata da un accesso di tipo Private.
Ambito. L'ambito di un'interfaccia corrisponde allo spazio dei nomi, alla classe, alla struttura o al modulo propri dell'interfaccia.
L'ambito di ogni membro dell'interfaccia è l'intera interfaccia.
Durata. Un'interfaccia di per sé non ha una durata, né l'hanno i suoi membri.Quando una classe implementa un'interfaccia e viene creato un oggetto come istanza di quella classe, l'oggetto ha una durata all'interno dell'applicazione in cui è in esecuzione.Per ulteriori informazioni, vedere "Durata" in Istruzione Class (Visual Basic).
Esempio
Nell'esempio seguente l'istruzione Interface viene utilizzata per definire un'interfaccia denominata thisInterface che richiede l'implementazione con un'istruzione Property e un'istruzione Function.
Public Interface thisInterface
Property thisProp(ByVal thisStr As String) As Char
Function thisFunc(ByVal thisInt As Integer) As Integer
End Interface
Osservare che le istruzioni Property e Function non introducono blocchi che terminano con End Property e End Function all'interno dell'interfaccia.L'interfaccia definisce soltanto le firme dei suoi membri.I blocchi Property e Function completi compaiono in una classe che implementa thisInterface.
Vedere anche
Riferimenti
Istruzione Class (Visual Basic)
Istruzione Function (Visual Basic)
In (modificatore generico) (Visual Basic)
Out (modificatore generico) (Visual Basic)
Concetti
Tipi generici in Visual Basic (Visual Basic)
Varianza nelle interfacce generiche (C# e Visual Basic)