Поделиться через


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 можно использовать в следующем контексте.

Оператор Class

См. также

Ссылки

Инструкция Inherits

NotInheritable (Visual Basic)

Основные понятия

Основы наследования (Visual Basic)

Другие ресурсы

Ключевые слова (Visual Basic)