Delen via


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 een Friend 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

Zie ook