MustInherit (Visual Basic)

Указывает, что класс можно использовать только в качестве базового класса и что невозможно создать объект непосредственно из него.

Замечания

Цель базового класса (также известного как абстрактный класс) заключается в определении функциональных возможностей, общих для всех классов, производных от него. Это позволяет сохранить производные классы от необходимости переопределить общие элементы. В некоторых случаях эта общая функциональность недостаточно завершена, чтобы сделать доступный для использования объект, и каждый производный класс определяет отсутствующие функциональные возможности. В таком случае требуется, чтобы потребляемый код создавал объекты только из производных классов. Для применения этого используется MustInherit базовый класс.

Другое MustInherit использование класса — ограничить переменную набором связанных классов. Можно определить базовый класс и наследить от него все связанные классы. Базовый класс не должен предоставлять функциональность, общую для всех производных классов, но она может служить фильтром для назначения значений переменным. Если используемый код объявляет переменную в качестве базового класса, Visual Basic позволяет назначать только объект из одного из производных классов этой переменной.

Платформа .NET Framework определяет несколько MustInherit классов, среди них ArrayEnumи ValueType. ValueType пример базового класса, ограничивающего переменную. Все типы значений, производные от ValueType. Если вы объявляете переменную как ValueType, можно назначать только типы значений этой переменной.

Правила

  • Контекст объявления. Вы можете использовать MustInherit только в инструкции Class .

  • Объединенные модификаторы. Нельзя указать MustInherit вместе с NotInheritable тем же объявлением.

Пример

В следующем примере показано принудительное наследование и принудительное переопределение. Базовый класс shape определяет переменную acrossLine. Классы circle и square производные от shape. Они наследуют определение acrossLine, но они должны определить функцию area , так как это вычисление отличается для каждого вида фигуры.

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

Можно объявить shape1 и shape2 быть типом shape. Однако невозможно создать объект из-за shape нехватки функциональных возможностей функции функции area и помечается MustInherit.

Поскольку они объявлены как shapeпеременные shape1 и shape2 ограничены объектами производных классов circle и square. Visual Basic не позволяет назначать любой другой объект этим переменным, что обеспечивает высокий уровень безопасности типов.

Использование

Модификатор MustInherit можно использовать в этом контексте:

Оператор Class

См. также