MustInherit (Visual Basic)

Określa, że klasa może być używana tylko jako klasa bazowa i że nie można utworzyć obiektu bezpośrednio z niej.

Uwagi

Celem klasy bazowej (znanej również jako klasa abstrakcyjna) jest zdefiniowanie funkcji wspólnych dla wszystkich klas pochodnych. Dzięki temu klasy pochodne nie muszą ponownie definiować wspólnych elementów. W niektórych przypadkach ta typowa funkcjonalność nie jest wystarczająca do utworzenia obiektu użytecznego, a każda klasa pochodna definiuje brakujące funkcje. W takim przypadku chcesz, aby kod zużywany tworzył obiekty tylko z klas pochodnych. Aby wymusić to, użyj polecenia MustInherit w klasie bazowej.

Innym zastosowaniem MustInherit klasy jest ograniczenie zmiennej do zestawu powiązanych klas. Można zdefiniować klasę bazową i utworzyć z niej wszystkie powiązane klasy. Klasa bazowa nie musi udostępniać żadnych funkcji wspólnych dla wszystkich klas pochodnych, ale może służyć jako filtr do przypisywania wartości do zmiennych. Jeśli kod zużywający deklaruje zmienną jako klasę bazową, program Visual Basic umożliwia przypisanie tylko obiektu z jednej z klas pochodnych do tej zmiennej.

Program .NET Framework definiuje kilka MustInherit klas, między innymi Array, Enumi ValueType. ValueType to przykład klasy bazowej, która ogranicza zmienną. Wszystkie typy wartości pochodzą z klasy ValueType. Jeśli zadeklarujesz zmienną jako ValueType, możesz przypisać tylko typy wartości do tej zmiennej.

Reguły

  • Kontekst deklaracji. Można użyć MustInherit tylko w instrukcji Class .

  • Modyfikatory połączone. Nie można określić MustInherit razem z NotInheritable tą samą deklaracją.

Przykład

Poniższy przykład ilustruje zarówno wymuszone dziedziczenie, jak i wymuszone zastępowanie. Klasa shape bazowa definiuje zmienną acrossLine. Klasy circle i square pochodzą z klasy shape. Dziedziczą definicję acrossLineelementu , ale muszą zdefiniować funkcję area , ponieważ to obliczenie jest inne dla każdego rodzaju kształtu.

Public MustInherit Class shape
    Public acrossLine As Double
    Public MustOverride Function area() As Double
End Class
Public Class circle : Inherits shape
    Public Overrides Function area() As Double
        Return Math.PI * acrossLine
    End Function
End Class
Public Class square : Inherits shape
    Public Overrides Function area() As Double
        Return acrossLine * acrossLine
    End Function
End Class
Public Class consumeShapes
    Public Sub makeShapes()
        Dim shape1, shape2 As shape
        shape1 = New circle
        shape2 = New square
    End Sub
End Class

Można zadeklarować shape1 i shape2 mieć typ shape. Nie można jednak utworzyć obiektu na podstawie shape , ponieważ brakuje mu funkcji area i jest oznaczony jako MustInherit.

Ponieważ są deklarowane jako shape, zmienne shape1 i shape2 są ograniczone do obiektów z klas circle pochodnych i square. Język Visual Basic nie umożliwia przypisania żadnego innego obiektu do tych zmiennych, co zapewnia wysoki poziom bezpieczeństwa typów.

Użycie

Modyfikator MustInherit może być używany w tym kontekście:

Class, instrukcja

Zobacz też