Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Especifica que una clase solo se puede usar como una clase base y que no se puede crear un objeto directamente a partir de ella.
Observaciones
El propósito de una clase base (también conocida como clase abstracta) es definir la funcionalidad que es común a todas las clases derivadas de ella. Esto evita que las clases derivadas tengan que volver a definir los elementos comunes. En algunos casos, esta funcionalidad común no es suficiente para hacer que un objeto utilizable y cada clase derivada defina la funcionalidad que falta. En tal caso, desea que el código de consumo cree objetos solo a partir de las clases derivadas.
MustInherit Use en la clase base para aplicar esto.
Otro uso de una MustInherit clase es restringir una variable a un conjunto de clases relacionadas. Puede definir una clase base y derivar todas estas clases relacionadas de ella. La clase base no necesita proporcionar ninguna funcionalidad común a todas las clases derivadas, pero puede servir como filtro para asignar valores a variables. Si el código de consumo declara una variable como la clase base, Visual Basic le permite asignar solo un objeto de una de las clases derivadas a esa variable.
.NET Framework define varias MustInherit clases, entre ellas Array, Enumy ValueType.
ValueType es un ejemplo de una clase base que restringe una variable. Todos los tipos de valor derivan de ValueType. Si declara una variable como ValueType, solo puede asignar tipos de valor a esa variable.
Reglas
Contexto de declaración. Solo puede usar
MustInheriten unaClassinstrucción .Modificadores combinados. No se puede especificar
MustInheritjunto conNotInheritableen la misma declaración.
Ejemplo
En el ejemplo siguiente se muestra la herencia forzada y la invalidación forzada. La clase shape base define una variable acrossLine. Las clases circle y square derivan de shape. Heredan la definición de acrossLine, pero deben definir la función area porque ese cálculo es diferente para cada tipo de forma.
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
Puede declarar shape1 y shape2 ser de tipo shape. Sin embargo, no se puede crear un objeto a partir de shape porque carece de la funcionalidad de la función area y está marcado como MustInherit.
Dado que se declaran como shape, las variables shape1 y shape2 están restringidas a objetos de las clases derivadas circle y square. Visual Basic no permite asignar ningún otro objeto a estas variables, lo que proporciona un alto nivel de seguridad de tipo.
Uso
El MustInherit modificador se puede usar en este contexto: