Condividi tramite


Istruzione Class (Visual Basic)

Aggiornamento: novembre 2007

Consente di dichiarare il nome di una classe e introduce la definizione delle variabili, delle proprietà, degli eventi e delle routine corrispondenti.

[ <attributelist> ] [ accessmodifier ] [ Shadows ] [ MustInherit | NotInheritable ] [ Partial ] _
Class name [ ( Of typelist ) ]
    [ Inherits classname ]
    [ Implements interfacenames ]
    [ statements ]
End Class

Parti

  • attributelist
    Facoltativo. Vedere Elenco degli attributi.

  • accessmodifier
    Facoltativo. Può essere uno dei seguenti:

    Vedere Livelli di accesso in Visual Basic.

  • Shadows
    Facoltativo. Vedere Shadows.

  • MustInherit
    Facoltativo. Vedere MustInherit.

  • NotInheritable
    Facoltativo. Vedere NotInheritable.

  • Partial
    Facoltativo. Indica che si tratta di una definizione parziale della classe. Vedere Partial (Visual Basic).

  • name
    Obbligatorio. Nome della classe. Vedere Nomi di elementi dichiarati.

  • Of
    Facoltativo. Specifica che si tratta di una classe generica.

  • typelist
    Obbligatoria se si utilizza la parola chiave Of. Elenco di parametri di tipo per la classe. Vedere Elenco dei tipi.

  • Inherits
    Facoltativo. Indica che la classe eredita membri di un'altra classe. Vedere Istruzione Inherits.

  • classname
    Obbligatoria se si utilizza l'istruzione Inherits. Nome della classe dalla quale deriva la classe.

  • Implements
    Facoltativo. Indica che la classe consente di implementare i membri di una o più interfacce. Vedere Istruzione Implements.

  • interfacenames
    Obbligatoria se si utilizza l'istruzione Implements. Nomi delle interfacce implementate dalla classe.

  • statements
    Facoltativo. Istruzioni che definiscono i membri della classe corrente.

  • End Class
    Obbligatorio. Consente di terminare la definizione Class.

Note

Istruzione Class che definisce un nuovo tipo di dati. Una classe rappresenta un blocco di generazione fondamentale per la programmazione orientata agli oggetti (OOP). Per ulteriori informazioni, vedere Programmazione orientata a oggetti in Visual Basic e Classi: progetti iniziali degli oggetti.

È possibile utilizzare Class solo a livello di modulo o di spazio dei nomi. In altri termini, il contesto della dichiarazione per una classe deve essere un file di origine, uno spazio dei nomi, una classe, una struttura, un modulo o un'interfaccia e non può essere una routine o un blocco. Per ulteriori informazioni, vedere Contesti delle dichiarazioni e livelli di accesso predefinito.

Ciascuna istanza di una classe presenta una durata indipendente da tutte le altre istanze. In questo caso la durata ha inizio quando viene creata da una clausola New (Visual Basic) o da una funzione quale Funzione CreateObject (Visual Basic) e termina dopo che tutte le variabili che fanno riferimento all'istanza sono state impostate su Nothing (Visual Basic) o sulle istanze di altre classi.

L'accesso predefinito delle classi è di tipo Friend (Visual Basic). È possibile modificarne i livelli di accesso mediante i modificatori di accesso. Per ulteriori informazioni, vedere Livelli di accesso in Visual Basic.

Regole

  • Nidificazione. È possibile definire una classe all'interno di un'altra classe. La classe esterna viene denominata classe contenente e la relativa classe interna viene denominata classe nidificata.

  • Ereditarietà. Se la classe utilizza l'Istruzione Inherits, è possibile specificare solo una classe base o un'interfaccia. Una classe non può ereditare da più elementi.

    Una classe non può ereditare da un'altra classe che dispone di un livello di accesso più restrittivo. Ad esempio una classe Public non può ereditare da una classe Friend.

    Una classe non può ereditare da una classe nidificata all'interno di essa.

  • Implementazione. Se la classe utilizza l'Istruzione Implements, è necessario implementare ogni membro definito da ciascuna interfaccia specificata in interfacenames. Un'eccezione a questa regola è costituita dalla reimplementazione di un membro della classe base. Per ulteriori informazioni, vedere "Reimplementazione" in Implements (Visual Basic).

  • Proprietà predefinita. Una classe può specificare soltanto una proprietà come proprietà predefinita. Per ulteriori informazioni, vedere Proprietà predefinite.

Comportamento

  • Livello di accesso. In una classe è possibile dichiarare ogni membro con un proprio livello di accesso. L'accesso predefinito dei membri di una classe è di tipo Public (Visual Basic), ad eccezione delle variabili e delle costanti che presentano l'accesso predefinito Private (Visual Basic). Se una classe dispone di un accesso più limitato di quello dei suoi membri, il livello di accesso della classe è prioritario.

  • Ambito. Una classe appartiene allo spazio dei nomi, alla classe, alla struttura o al modulo in cui è contenuta.

    L'ambito di un ogni membro di un classe è l'intera classe.

    Durata. Visual Basic non supporta le classi static. Dal punto di vista funzionale un modulo si comporta come una classe static. Per ulteriori informazioni, vedere Istruzione Module.

    Le durate dei membri di classe dipendono dalla modalità e dal percorso della dichiarazione. Per ulteriori informazioni, vedere Durata in Visual Basic.

  • Qualificazione. Il codice all'esterno di una classe deve qualificare il nome di un membro con il nome della classe.

    Se il codice all'interno di una classe nidificata crea un riferimento non qualificato a un elemento di programmazione, questo verrà cercato innanzitutto nella classe nidificata, quindi nella classe che lo contiene e così via fino a raggiungere l'elemento più esterno. Per ulteriori informazioni, vedere Risoluzione di un riferimento quando più variabili hanno lo stesso nome.

Classi e moduli

Questi elementi hanno molte similitudini, ma vi sono anche alcune differenze significative.

  • Terminologia. Nelle versioni precedenti di Visual Basic vengono riconosciuti due tipi di moduli: moduli della classe (file cls) e moduli standard (file bas). La versione corrente li definisce classi e moduli, rispettivamente.

  • Membri condivisi. È possibile controllare se un membro di una classe è un membro condiviso o dell'istanza.

  • Orientamento dell'oggetto. Le classi sono orientate agli oggetti mentre i moduli no. È possibile creare una o più istanze di una classe. Per ulteriori informazioni, vedere Confronto tra classi e moduli.

Esempio

Nell'esempio seguente viene utilizzata un'istruzione Class per definire una classe e numerosi membri.

Class bankAccount
    Shared interestRate As Decimal
    Private accountNumber As String
    Private accountBalance As Decimal
    Public holdOnAccount As Boolean = False

    Public ReadOnly Property balance() As Decimal
        Get
            Return accountBalance
        End Get
    End Property

    Public Sub postInterest()
        accountBalance = accountBalance * (1 + interestRate)
    End Sub

    Public Sub postDeposit(ByVal amountIn As Decimal)
        accountBalance = accountBalance + amountIn
    End Sub

    Public Sub postWithdrawal(ByVal amountOut As Decimal)
        accountBalance = accountBalance - amountOut
    End Sub
End Class

Vedere anche

Attività

Procedura: utilizzare una classe generica

Concetti

Strutture e classi

Durata degli oggetti: come creare e distruggere oggetti

Tipi generici in Visual Basic

Riferimenti

Istruzione Interface (Visual Basic)

Istruzione Module

Istruzione Property

Altre risorse

Cenni preliminari sulle classi