MustInherit (Visual Basic)
Especifica que una clase sólo se puede utilizar como una clase base y que no se puede crear directamente un objeto a partir de ella.
Comentarios
La finalidad de una clase base (también conocida como clase abstracta) es definir la funcionalidad común a todas las clases que se derivan de ésta.La clase base evita que las clases derivadas tengan que redefinir los elementos comunes.En algunos casos, esta funcionalidad común no es lo suficientemente completa para que se pueda utilizar un objeto y cada clase derivada define la funcionalidad que falta.En estos casos, deseará utilizar el código para crear objetos únicamente a partir de las clases derivadas.Para ello, puede utilizar MustInherit en la clase base.
Otro utilidad de una clase MustInherit es restringir una variable a un conjunto de clases relacionadas.Puede definir una clase base y derivar todos estas clases relacionadas a partir de ella.La clase base no necesita proporcionar una funcionalidad común a todas las clases derivadas, aunque se puede utilizar como filtro en la asignación de valores a las variables.Si el código utilizado declara una variable como clase base, Visual Basic permite asignar únicamente un objeto desde una de las clases derivadas a dicha variable.
.NET Framework define varias clases MustInherit, entre ellas Array, Enum y ValueType.ValueType es un ejemplo de una clase base que restringe una variable.Todos los tipos de valor se derivan de ValueType.Si declara una variable como ValueType, puede asignar sólo tipos de valor a esa variable.
Reglas
Contexto de la declaración. Sólo se puede utilizar MustInherit en una instrucción Class.
Modificadores combinados. No se puede especificar MustInherit junto con NotInheritable en la misma declaración.
Ejemplo
En el ejemplo siguiente se ilustra la herencia forzada y el reemplazo forzado.La clase base shape define una variable acrossLine.Las clases circle y square se derivan de shape.Heredan la definición de acrossLine, pero deben definir la función area porque ese cálculo es diferente en 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 para que sean del tipo shape.Sin embargo, no puede crear un objeto a partir de shape porque carece de la funcionalidad de area y se ha marcado como MustInherit.
Dado que se declaran como shape, las variables shape1 y shape2 se restringen a los objetos procedentes de las clases derivadas circle y square.Visual Basic no permite asignar ningún otro objeto a estas variables, lo que proporciona un elevado nivel de seguridad de tipos.
Uso
El modificador MustInherit se puede utilizar en este contexto:
Vea también
Referencia
Conceptos
Fundamentos de la herencia (Visual Basic)