Osztályutasítás (Visual Basic)

Deklarálja az osztály nevét, és bevezeti az osztály változóinak, tulajdonságainak, eseményeinek és eljárásainak definícióját.

Syntax

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

Részek

Időszak Definíció
attributelist Opcionális. Lásd: Attribútumlista.
accessmodifier Opcionális. A következők egyike lehet:

- Nyilvános
- Védett
- Barátom
- Privát
- Védett barát
- Privát védelem

Lásd a Visual Basic hozzáférési szintjeinek megtekintését.
Shadows Opcionális. Lásd: Árnyékok.
MustInherit Opcionális. Lásd: MustInherit.
NotInheritable Opcionális. Lásd: NotInheritable.
Partial Opcionális. Az osztály részleges definícióját jelzi. Lásd: Részleges.
name Szükséges. Az osztály neve. Lásd: Deklarált elemnevek.
Of Opcionális. Azt adja meg, hogy ez egy általános osztály.
typelist Az Of kulcsszó használata esetén kötelező megadni. Az osztály típusparamétereinek listája. Lásd: Típuslista.
Inherits Opcionális. Azt jelzi, hogy ez az osztály egy másik osztály tagjait örökli. Lásd: Öröklési utasítás.
classname Az utasítás használata Inherits esetén kötelező megadni. Annak az osztálynak a neve, amelyből az osztály származik.
Implements Opcionális. Azt jelzi, hogy ez az osztály egy vagy több interfész tagjait valósítja meg. Lásd: Implements Utasítás.
interfacenames Az utasítás használata Implements esetén kötelező megadni. Az osztály által implementálva lévő felületek nevei.
statements Opcionális. Az osztály tagjait meghatározó utasítások.
End Class Szükséges. Leállítja a definíciót Class .

Megjegyzések

Az Class utasítás új adattípust határoz meg. Az osztály az objektumorientált programozás (OOP) alapvető építőeleme. További információ: Objektumok és osztályok.

Csak névtér- vagy modulszinten használható Class . Ez azt jelenti, hogy az osztály deklarációs környezetének forrásfájlnak, névtérnek, osztálynak, struktúrának, modulnak vagy interfésznek kell lennie, és nem lehet eljárás vagy blokk. További információ: Deklarációs környezetek és alapértelmezett hozzáférési szintek.

Az osztály minden példánya az összes többi példánytól független élettartamú. Ez az élettartam akkor kezdődik, amikor egy Új operátor záradék vagy egy olyan függvény hozza létre, mint a CreateObject. Akkor ér véget, ha a példányra mutató összes változó a Semmi vagy más osztályok példányai értékre van állítva.

Az osztályok alapértelmezés szerint a Barát hozzáféréshez lesznek kapcsolva. A hozzáférési szinteket a hozzáférési módosítókkal módosíthatja. További információ: Hozzáférési szintek a Visual Basicben.

Szabályok

  • Fészkelő. Definiálhat egy osztályt egy másikon belül. A külső osztályt tartalmazó osztálynak, a belső osztályt pedig beágyazott osztálynak nevezzük.

  • Öröklési. Ha az osztály az Öröklési utasítást használja, csak egy alaposztályt vagy felületet adhat meg. Egy osztály nem örökölhet egynél több elemtől.

    Egy osztály nem örökölhet egy szigorúbb hozzáférési szinttel rendelkező másik osztálytól. Egy osztály például Public nem örökölhet egy Friend osztálytól.

    Az osztály nem örökölhető a benne beágyazott osztálytól.

  • Végrehajtása. Ha az osztály az Implements Utasítást használja, minden, a megadott felületen meghatározott tagot interfacenamesimplementálnia kell. Ez alól kivételt képez egy alaposztálytag újratelepítése. További információ: "Újraimplementáció" a Implementsben.

  • Alapértelmezett tulajdonság. Egy osztály legfeljebb egy tulajdonságot adhat meg alapértelmezett tulajdonságként. További információ: Alapértelmezett.

Működés

  • Hozzáférési szint. Egy osztályon belül minden tagot saját hozzáférési szinttel deklarálhat. Az osztálytagok alapértelmezés szerint nyilvános hozzáféréssel érhetők el, kivéve a változókat és állandókat, amelyek alapértelmezés szerint privát hozzáféréssel érhetők el. Ha egy osztály több korlátozott hozzáféréssel rendelkezik, mint az egyik tagja, az osztály hozzáférési szintje elsőbbséget élvez.

  • Hatály. Egy osztály hatókörben van, amely tartalmazza a névteret, az osztályt, a struktúrát vagy a modult.

    Minden osztálytag hatóköre a teljes osztály.

    Élettartam. A Visual Basic nem támogatja a statikus osztályokat. A statikus osztály funkcionális megfelelője egy modul. További információ: Modulutasítás.

    Az osztálytagok élettartama attól függ, hogyan és hol deklarálják őket. További információ: Élettartam a Visual Basicben.

  • Képesítés. Az osztályon kívüli kódnak az adott osztály nevével rendelkező tag nevét kell minősítenie.

    Ha a beágyazott osztályban lévő kód nem minősített hivatkozást ad egy programozási elemre, a Visual Basic először a beágyazott osztályban, majd a benne lévő osztályban keresi az elemet, és így tovább a legkülső elemet.

Osztályok és modulok

Ezek az elemek sok hasonlóságot mutatnak, de van néhány fontos különbség is.

  • Terminológia. A Visual Basic korábbi verziói kétféle modult ismernek fel: osztálymodulokat (.cls-fájlokat) és standard modulokat (.bas-fájlokat). Az aktuális verzió ezeket az osztályokat és modulokat hívja meg.

  • Megosztott tagok. Szabályozhatja, hogy egy osztály egy tagja megosztott vagy példánytag-e.

  • Objektum tájolása. Az osztályok objektumorientáltak, de a modulok nem. Létrehozhat egy vagy több osztálypéldányt. További információ: Objektumok és osztályok.

Példa

Az alábbi példa egy utasítással Class határoz meg egy osztályt és több tagot.

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

Lásd még