Share via


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

Argomento

Definizione

attributelist

Facoltativo. Vedere Elenco degli attributi.

accessmodifier

Facoltativo. ad esempio uno dei seguenti:

Vedere Livelli di accesso in Visual Basic.

Shadows

Facoltativo. Vedere Shadows.

name

Obbligatoria. Nome dell'interfaccia. Per informazioni, vedere Nomi di elementi dichiarati (Visual Basic).

Of

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

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

Facoltativo. Modificatori corretti per il membro dell'interfaccia in corso di definizione.

Property

Facoltativo. Definisce una proprietà che è un membro dell'interfaccia.

Function

Facoltativo. Definisce una routine Function che è un membro dell'interfaccia.

Sub

Facoltativo. Definisce una routine Sub che è un membro dell'interfaccia.

Event

Facoltativo. Definisce un evento che è un membro dell'interfaccia.

Interface

Facoltativo. Definisce un'interfaccia annidata all'interno di questa interfaccia. La definizione dell'interfaccia annidata deve terminare con un'istruzione End Interface.

Class

Facoltativo. Definisce una classe che è un membro dell'interfaccia. La definizione della classe membro deve terminare con un'istruzione End Class.

Structure

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. Nell'esempio riportato di seguito viene illustrata questa situazione.

    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 Sub doSomething è 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 Module

Istruzione Structure

Istruzione Property

Istruzione Function (Visual Basic)

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

Altre risorse

Interfacce (Visual Basic)