Klasse-instructie (Visual Basic)
Declareert de naam van een klasse en introduceert de definitie van de variabelen, eigenschappen, gebeurtenissen en procedures die de klasse omvat.
Syntaxis
[ <attributelist> ] [ accessmodifier ] [ Shadows ] [ MustInherit | NotInheritable ] [ Partial ] _
Class name [ ( Of typelist ) ]
[ Inherits classname ]
[ Implements interfacenames ]
[ statements ]
End Class
generator
Term | Definitie |
---|---|
attributelist |
Optioneel. Zie de lijst met kenmerken. |
accessmodifier |
Optioneel. Dit kan een van de volgende zijn: - Openbaar - Beschermd - Vriend - Privé - Beveiligde vriend - Privé beveiligd Zie Access-niveaus in Visual Basic. |
Shadows |
Optioneel. Zie schaduwen. |
MustInherit |
Optioneel. Zie MustInherit. |
NotInheritable |
Optioneel. Zie Nietheritable. |
Partial |
Optioneel. Geeft een gedeeltelijke definitie van de klasse aan. Zie Gedeeltelijk. |
name |
Vereist. Naam van deze klasse. Zie Gedeclareerde elementnamen. |
Of |
Optioneel. Hiermee geeft u op dat dit een algemene klasse is. |
typelist |
Vereist als u het trefwoord Van gebruikt. Lijst met typeparameters voor deze klasse. Zie Lijst met typen. |
Inherits |
Optioneel. Geeft aan dat deze klasse de leden van een andere klasse over neemt. Zie Overname-instructie. |
classname |
Vereist als u de Inherits instructie gebruikt. De naam van de klasse waaruit deze klasse is afgeleid. |
Implements |
Optioneel. Geeft aan dat deze klasse de leden van een of meer interfaces implementeert. Zie Implementatie-instructie. |
interfacenames |
Vereist als u de Implements instructie gebruikt. De namen van de interfaces die deze klasse implementeert. |
statements |
Optioneel. Instructies die de leden van deze klasse definiëren. |
End Class |
Vereist. Hiermee wordt de Class definitie beëindigd. |
Opmerkingen
Een Class
instructie definieert een nieuw gegevenstype. Een klasse is een fundamentele bouwsteen van objectgeoriënteerd programmeren (OOP). Zie Objecten en klassen voor meer informatie.
U kunt alleen op naamruimte- of moduleniveau gebruiken Class
. Dit betekent dat de declaratiecontext voor een klasse een bronbestand, naamruimte, klasse, structuur, module of interface moet zijn en geen procedure of blok kan zijn. Zie Declaratiecontexten en standaardtoegangsniveaus voor meer informatie.
Elk exemplaar van een klasse heeft een levensduur onafhankelijk van alle andere exemplaren. Deze levensduur begint wanneer deze wordt gemaakt door een nieuwe operatorcomponent of door een functie zoals CreateObject. Het eindigt wanneer alle variabelen die naar het exemplaar verwijzen, zijn ingesteld op Niets of op exemplaren van andere klassen.
Klassen zijn standaard ingesteld op Vriend-toegang . U kunt hun toegangsniveaus aanpassen met de toegangsaanpassingen. Zie Access-niveaus in Visual Basic voor meer informatie.
Regels
Nesten. U kunt de ene klasse binnen een andere klasse definiëren. De buitenste klasse wordt de bevatde klasse genoemd en de binnenste klasse wordt een geneste klasse genoemd.
Overname. Als de klasse gebruikmaakt van de instructie Overnames, kunt u slechts één basisklasse of interface opgeven. Een klasse kan niet overnemen van meer dan één element.
Een klasse kan niet overnemen van een andere klasse met een meer beperkend toegangsniveau. Een
Public
klasse kan bijvoorbeeld niet worden overgenomen van eenFriend
klasse.Een klasse kan niet overnemen van een klasse die erin is genest.
Uitvoering. Als de klasse gebruikmaakt van de instructie Implements, moet u elk lid implementeren dat is gedefinieerd door elke interface die u opgeeft in
interfacenames
. Een uitzondering hierop is het opnieuw genereren van een basisklasselid. Zie 'Reimplementation' in Implements voor meer informatie.Standaardeigenschap. Een klasse kan maximaal één eigenschap opgeven als standaardeigenschap. Zie Standaard voor meer informatie.
Gedrag
Toegangsniveau. Binnen een klasse kunt u elk lid declareren met een eigen toegangsniveau. Klasseleden zijn standaard ingesteld op openbare toegang, met uitzondering van variabelen en constanten, die standaard privétoegang hebben. Wanneer een klas meer beperkte toegang heeft dan een van de leden, heeft het toegangsniveau van de klas voorrang.
Reikwijdte. Een klasse bevindt zich binnen het bereik van de klasse, de klasse, de structuur of de module.
Het bereik van elk klasselid is de hele klasse.
Levensduur. Visual Basic biedt geen ondersteuning voor statische klassen. Het functionele equivalent van een statische klasse wordt geleverd door een module. Zie Module-instructie voor meer informatie.
Klasleden hebben levensduur, afhankelijk van hoe en waar ze worden gedeclareerd. Zie Levensduur in Visual Basic voor meer informatie.
Kwalificatie. Code buiten een klasse moet de naam van een lid met de naam van die klasse kwalificeren.
Als code in een geneste klasse een niet-gekwalificeerde verwijzing naar een programmeerelement maakt, zoekt Visual Basic eerst naar het element in de geneste klasse, vervolgens in de bijbehorende klasse, enzovoort naar het buitenste element dat het bevat.
Klassen en modules
Deze elementen hebben veel overeenkomsten, maar er zijn ook enkele belangrijke verschillen.
Terminologie. In eerdere versies van Visual Basic worden twee typen modules herkend: klassemodules (.cls-bestanden) en standaardmodules (.bas-bestanden). De huidige versie roept deze klassen en modules respectievelijk aan.
Gedeelde leden. U kunt bepalen of een lid van een klasse een gedeeld lid of exemplaarlid is.
Objectstand. Klassen zijn objectgeoriënteerd, maar modules zijn niet. U kunt een of meer exemplaren van een klasse maken. Zie Objecten en klassen voor meer informatie.
Opmerking
In het volgende voorbeeld wordt een Class
instructie gebruikt om een klasse en verschillende leden te definiëren.
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