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: - Pubblica - Protected - Friend - Privata - Protected Friend - Private Protected Vedere Access levels in Visual Basic. |
Shadows |
Facoltativo. Vedere Ombre. |
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 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 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 definizione Class . |
Osservazioni:
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.
Si può usare Class
solo a livello di spazio dei nomi o modulo. Ciò significa che il contesto di 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, ad esempio CreateObject. 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 hanno l'accesso Amico. È possibile regolare i livelli di accesso con i modificatori di accesso. Per ulteriori informazioni, vedere Livelli di accesso in Visual Basic.
Regole
Annidamento. È possibile definire una classe all'interno di un'altra. La classe esterna è denominata classe contenitore e la classe interna è denominata classe annidata.
Ereditarietà. 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 classe
Public
non può ereditare da una classeFriend
.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 a ciò è la nuova implementazione di un membro della classe di base. Per altre informazioni, vedere "Reimplementazione" in Implementazioni.Proprietà predefinita. Una classe può specificare al massimo una proprietà come proprietà predefinita. Per altre informazioni, vedere Valore predefinito.
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 ad accesso pubblico, ad eccezione di variabili e costanti, che per impostazione predefinita sono ad accesso Privato. Quando una classe ha accesso più limitato rispetto a uno dei relativi membri, il livello di accesso della classe ha la precedenza.
Ambito. Una classe è nell'ambito in tutto lo spazio dei nomi, la classe, la struttura o il modulo contenitore.
L'ambito di ogni membro della classe è l'intera classe.
Durata. 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 durate basate su come e dove 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 prima l'elemento nella classe nidificata, quindi nella classe contenitore e così via fino all'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 li chiama rispettivamente classi e moduli.
Membri condivisi. È possibile controllare se un membro di una classe è un membro condiviso o un membro dell'istanza.
Orientamento agli oggetti. Le classi sono orientate agli oggetti, ma i moduli non lo 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 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
- Oggetti e classi
- Strutture e classi
- Istruzione Interface
- Istruzione Module
- Istruzione Property
- Object Lifetime: How Objects Are Created and Destroyed (Durata degli oggetti: come creare e distruggere oggetti)
- Generic Types in Visual Basic
- Procedura: Usare una classe generica