Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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 |
Opzionale. Vedere Elenco attributi. |
accessmodifier |
Opzionale. Può essere uno dei seguenti: - Pubblico - Protetto - Amico - Privato - Amico protetto - Privato protetto Vedere Livelli di accesso in Visual Basic. |
Shadows |
Opzionale. Vedi Ombre. |
MustInherit |
Opzionale. Vedere MustInherit. |
NotInheritable |
Opzionale. Vedere NotInheritable. |
Partial |
Opzionale. Indica una definizione parziale della classe . Vedere Parziale. |
name |
Obbligatorio. Nome di questa classe. Vedere Nomi di elementi dichiarati. |
Of |
Opzionale. 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 |
Opzionale. Indica che questa classe eredita i membri di un'altra classe. Vedere L'istruzione Inherits. |
classname |
Obbligatorio se si usa l'istruzione Inherits . Nome della classe da cui deriva questa classe. |
Implements |
Opzionale. 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 |
Opzionale. Istruzioni che definiscono i membri di questa classe. |
End Class |
Obbligatorio. Termina la Class definizione. |
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.
È 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 di dichiarazione 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.
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
Publicclasse non può ereditare da unaFriendclasse.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 questa è la rimplementazione di un membro della classe di base. Per altre informazioni, vedere "Reimplementation" in Implements (Implementazioni).Default, proprietà. 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 di variabili e costanti, che per impostazione predefinita è 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 della 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 durate a seconda di come e dove vengono dichiarati. Per ulteriori informazioni, vedere Lifetime 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 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 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 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