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
можно использовать в этом контексте: