MustInherit (Visual Basic)
Указывает, что класс может использоваться только как базовый класс и что невозможно создать объект непосредственно из него.
Заметки
Назначение базового класса (также называемого абстрактным классом) — определение функций, общих для всех классов, производных от него.Это предохраняет производные классы от необходимости переопределять общие элементы.В некоторых случаях эта общая функциональная возможность недостаточно полна, чтобы сделать подходящий объект, и каждый производный класс определяет отсутствующие функциональные возможности.В таком случае требуется много кода для создания объектов только из производных классов.Для реализации этого необходимо применить MustInherit к базовому классу.
Другое применение MustInherit — это ограничение переменной до набора связанных классов.Можно определить базовый класс и вывести все эти связанные классы из него.Базовый класс не требует предоставления функциональных возможностей, общих для всех производных классов, но может служить фильтром для присвоения значений переменным.Если код объявляет переменную как базовый класс, Visual Basic позволяет Вам присвоить ей только объект из одного из производных классов.
.NET Framework определяет несколько классов MustInherit, в том числе Array, Enum и 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 можно использовать в следующем контексте.
См. также
Ссылки
Основные понятия
Основы наследования (Visual Basic)