Istruzione Class (Visual Basic)

Dichiara il nome di una classe e introduce la definizione delle variabili, delle proprietà, degli eventi e delle procedure incluse nella classe.

Sintassi

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

Parti

Termine Definizione
attributelist facoltativo. Vedere Elenco attributi.
accessmodifier facoltativo. Può essere uno dei seguenti:

- Pubblico
- Protetto
- Amico
- Privato
- Amico protetto
- Privato protetto

Vedere Livelli di accesso in Visual Basic.
Shadows facoltativo. Vedi Ombreggiature.
MustInherit facoltativo. Vedere MustInherit.
NotInheritable facoltativo. Vedere NotInheritable.
Partial facoltativo. Indica una definizione parziale della classe . Vedere Parziale.
name Obbligatorio. Nome di questa classe. Vedere Declared Element Names.
Of facoltativo. Specifica che si tratta di una classe generica.
typelist Obbligatorio se si usa la parola chiave Of . Elenco di parametri di tipo per questa classe. Vedere Elenco dei tipi.
Inherits facoltativo. Indica che questa classe eredita i membri di un'altra classe. Vedere Istruzione Inherits.
classname Obbligatorio se si usa l'istruzione Inherits . Nome della classe da cui deriva questa classe.
Implements facoltativo. Indica che questa classe implementa i membri di una o più interfacce. Vedere L'istruzione Implements.
interfacenames Obbligatorio se si usa l'istruzione Implements . Nomi delle interfacce implementate da questa classe.
statements facoltativo. Istruzioni che definiscono i membri di questa classe.
End Class Obbligatorio. Termina la Class definizione.

Commenti

Un'istruzione Class definisce un nuovo tipo di dati. Una classe è un blocco predefinito fondamentale della programmazione orientata agli oggetti (OOP). Per altre informazioni, vedere Oggetti e classi.

È possibile usare Class solo a livello di spazio dei nomi o modulo. Ciò significa che 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 altre informazioni, vedere Contesti delle dichiarazioni e livelli di accesso predefiniti.

Ogni istanza di una classe ha una durata indipendente da tutte le altre istanze. Questa durata inizia quando viene creata da una clausola New Operator o da una funzione, CreateObjectad esempio . Termina quando tutte le variabili che puntano all'istanza sono state impostate su Nothing o su istanze di altre classi.

Per impostazione predefinita, le classi sono Accesso Friend . È possibile regolare i livelli di accesso con i modificatori di accesso. Per altre informazioni, vedere Livelli di accesso in Visual Basic.

Regole

  • Nidificazione. È possibile definire una classe all'interno di un'altra. La classe esterna è denominata classe contenitore e la classe interna è denominata classe annidata.

  • Eredità. Se la classe usa l'istruzione Inherits, è possibile specificare una sola classe o interfaccia di base. Una classe non può ereditare da più di un elemento.

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

    Una classe non può ereditare da una classe annidata al suo interno.

  • Implementazione. Se la classe usa l'istruzione Implements, è necessario implementare ogni membro definito da ogni interfaccia specificata in interfacenames. Un'eccezione è la rimplementazione di un membro della classe di base. Per altre informazioni, vedere "Reimplementation" in Implements .For more information, see "Reimplementation" in Implements.

  • Proprietà predefinita. Una classe può specificare al massimo una proprietà come proprietà predefinita. Per altre informazioni, vedere Impostazione predefinita.

Comportamento

  • Livello di accesso. All'interno di una classe è possibile dichiarare ogni membro con il proprio livello di accesso. Per impostazione predefinita, i membri della classe sono Accesso pubblico , ad eccezione delle variabili e delle costanti, che per impostazione predefinita è Accesso privato . Quando una classe ha un accesso più limitato rispetto a uno dei relativi membri, il livello di accesso alla classe ha la precedenza.

  • Ambito. Una classe è nell'ambito in tutto lo spazio dei nomi, la classe, la struttura o il modulo che lo contiene.

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

    Vita. Visual Basic non supporta classi statiche. L'equivalente funzionale di una classe statica viene fornito da un modulo. Per altre informazioni, vedere Istruzione Module.

    I membri della classe hanno una durata a seconda della modalità e della posizione in cui vengono dichiarati. Per altre informazioni, vedere Durata in Visual Basic.

  • Qualificazione. Il codice esterno a una classe deve qualificare il nome di un membro con il nome di tale classe.

    Se il codice all'interno di una classe annidata crea un riferimento non qualificato a un elemento di programmazione, Visual Basic cerca l'elemento prima nella classe annidata, quindi nella classe contenitore e così via verso l'elemento contenitore più esterno.

Classi e moduli

Questi elementi presentano molte analogie, ma esistono anche alcune differenze importanti.

  • Terminologia. Le versioni precedenti di Visual Basic riconoscono due tipi di moduli: moduli di classe (file con estensione cls) e moduli standard (file con estensione bas). La versione corrente chiama rispettivamente queste classi e moduli.

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

  • Orientamento dell'oggetto. Le classi sono orientate agli oggetti, ma i moduli non sono. È possibile creare una o più istanze di una classe. Per altre informazioni, vedere Oggetti e classi.

Esempio

Nell'esempio seguente viene utilizzata un'istruzione Class per definire una classe e diversi 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

Vedi anche