Class — Instrukcja (Visual Basic)

Deklaruje nazwę klasy i wprowadza definicję zmiennych, właściwości, zdarzeń i procedur, które składa się z klasy.

Składnia

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

generatora

Termin Definicja
attributelist Opcjonalny. Zobacz Lista atrybutów.
accessmodifier Opcjonalny. Może być jednym z następujących elementów:

- Public
- Protected
- Friend
- Private
- Protected Friend
- Private Protected

Zobacz Poziomy dostępu w Visual Basic.
Shadows Opcjonalny. Zobacz Cienie.
MustInherit Opcjonalny. Zobacz MustInherit.
NotInheritable Opcjonalny. Zobacz NotInheritable.
Partial Opcjonalny. Wskazuje częściową definicję klasy. Zobacz Częściowe.
name Wymagany. Nazwa tej klasy. Zobacz Nazwy zadeklarowanych elementów.
Of Opcjonalny. Określa, że jest to klasa ogólna.
typelist Wymagane, jeśli używasz słowa kluczowego Of . Lista parametrów typu dla tej klasy. Zobacz Typ listy.
Inherits Opcjonalny. Wskazuje, że ta klasa dziedziczy składowe innej klasy. Zobacz Dziedziczy instrukcję.
classname Wymagane, jeśli używasz instrukcji Inherits . Nazwa klasy, z której pochodzi ta klasa.
Implements Opcjonalny. Wskazuje, że ta klasa implementuje elementy członkowskie co najmniej jednego interfejsu. Zobacz Implements, instrukcja.
interfacenames Wymagane, jeśli używasz instrukcji Implements . Nazwy interfejsów, które implementuje ta klasa.
statements Opcjonalny. Instrukcje definiujące składowe tej klasy.
End Class Wymagany. Kończy definicję Class .

Uwagi

Instrukcja Class definiuje nowy typ danych. Klasa jest podstawowym blokiem konstrukcyjnym programowania obiektowego (OOP). Aby uzyskać więcej informacji, zobacz Obiekty i klasy.

Można używać Class tylko na poziomie przestrzeni nazw lub modułu. Oznacza to, że kontekst deklaracji dla klasy musi być plikiem źródłowym, przestrzenią nazw, klasą, strukturą, modułem lub interfejsem i nie może być procedurą ani blokiem. Aby uzyskać więcej informacji, zobacz Konteksty deklaracji i Domyślne poziomy dostępu.

Każde wystąpienie klasy ma okres istnienia niezależny od wszystkich innych wystąpień. Ten okres istnienia rozpoczyna się, gdy jest tworzony przez klauzulę Nowy operator lub przez funkcję, taką jak CreateObject. Kończy się, gdy wszystkie zmienne wskazujące wystąpienie zostały ustawione na wartość Nic lub wystąpień innych klas.

Klasy domyślnie mają dostęp znajomy . Możesz dostosować ich poziomy dostępu za pomocą modyfikatorów dostępu. Aby uzyskać więcej informacji, zobacz Poziomy dostępu w Visual Basic.

Reguły

  • Zagnieżdżenia. Można zdefiniować jedną klasę w innej. Klasa zewnętrzna jest nazywana klasą zawierającą, a klasa wewnętrzna jest nazywana klasą zagnieżdżona.

  • Dziedziczenia. Jeśli klasa używa instrukcji Dziedziczy, można określić tylko jedną klasę bazową lub interfejs. Klasa nie może dziedziczyć z więcej niż jednego elementu.

    Klasa nie może dziedziczyć z innej klasy z bardziej restrykcyjnym poziomem dostępu. Na przykład Public klasa nie może dziedziczyć z Friend klasy.

    Klasa nie może dziedziczyć z klasy zagnieżdżonej w niej.

  • Implementacji. Jeśli klasa używa instrukcji Implements, należy zaimplementować każdy element członkowski zdefiniowany przez każdy interfejs określony w elemencie interfacenames. Wyjątkiem jest ponowne wdrożenie składowej klasy bazowej. Aby uzyskać więcej informacji, zobacz "Reimplementation" (Ponowne wdrażanie) w temacie Implements (Implementacje).

  • Właściwość domyślna. Klasa może określić co najwyżej jedną właściwość jako jej właściwość domyślną. Aby uzyskać więcej informacji, zobacz Domyślne.

Zachowanie

  • Poziom dostępu. W ramach klasy można zadeklarować każdy element członkowski z własnym poziomem dostępu. Elementy członkowskie klasy domyślnie mają dostęp publiczny , z wyjątkiem zmiennych i stałych, które domyślnie mają dostęp prywatny . Jeśli klasa ma bardziej ograniczony dostęp niż jeden z jej elementów członkowskich, poziom dostępu do klasy ma pierwszeństwo.

  • Zakres. Klasa jest w zakresie obejmującym przestrzeń nazw, klasę, strukturę lub moduł.

    Zakresem każdego elementu członkowskiego klasy jest cała klasa.

    Okres istnienia. Visual Basic nie obsługuje klas statycznych. Funkcjonalny odpowiednik klasy statycznej jest dostarczany przez moduł. Aby uzyskać więcej informacji, zobacz Instrukcja modułu.

    Składowe klasy mają okresy istnienia w zależności od tego, jak i gdzie są deklarowane. Aby uzyskać więcej informacji, zobacz Okres istnienia w Visual Basic.

  • Kwalifikacji. Kod poza klasą musi kwalifikować nazwę elementu członkowskiego o nazwie tej klasy.

    Jeśli kod wewnątrz zagnieżdżonej klasy sprawia, że niekwalifikowane odwołanie do elementu programowania, Visual Basic wyszukuje element najpierw w zagnieżdżonej klasie, a następnie w jej klasie zawierającej i tak dalej do najbardziej zewnętrznego elementu zawierającego.

Klasy i moduły

Te elementy mają wiele podobieństw, ale istnieją również pewne ważne różnice.

  • Terminologia. Poprzednie wersje programu Visual Basic rozpoznają dwa typy modułów: moduły klas (pliki cls) i standardowe moduły (pliki bas). Bieżąca wersja wywołuje odpowiednio te klasy i moduły.

  • Udostępnione elementy członkowskie. Możesz kontrolować, czy element członkowski klasy jest elementem członkowskim współużytkowanego, czy wystąpienia.

  • Orientacja obiektu. Klasy są obiektowe, ale moduły nie. Można utworzyć co najmniej jedno wystąpienie klasy. Aby uzyskać więcej informacji, zobacz Obiekty i klasy.

Przykład

W poniższym przykładzie użyto instrukcji , aby zdefiniować klasę Class i kilka elementów członkowskich.

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

Zobacz też