MustInherit (Visual Basic)

Especifica que una clase solo se puede usar como clase base y que no se puede crear un objeto directamente a partir de ella.

Comentarios

El propósito de una clase base (también conocida como clase abstracta) es definir una funcionalidad común a todas las clases derivadas de ella. Esto hace que las clases derivadas no tengan que volver a definir los elementos comunes. En algunos casos, esta funcionalidad común no es lo suficientemente completa como para convertir un objeto utilizable y cada clase derivada define la funcionalidad que falta. En tal caso, desea que el código de consumo cree objetos solo a partir de las clases derivadas. Use en MustInherit 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 clase base, Visual Basic permite asignar solo un objeto de una de las clases derivadas a esa variable.

El .NET Framework define varias MustInherit clases, entre las que Array se encuentran , y Enum 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 se puede MustInherit usar en una instrucción Class .

  • Modificadores combinados. No se puede MustInherit especificar junto con en la misma NotInheritable declaración.

Ejemplo

En el ejemplo siguiente se muestra tanto la herencia forzada como la invalidación forzada. La clase base shape define una variable acrossLine . Las clases circle y square derivan de shape . Heredan la definición de , pero deben definir la función acrossLine porque ese cálculo es diferente para cada tipo de area 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 para que sean de tipo shape2 shape . Sin embargo, no se puede crear un objeto a partir de shape porque carece de la funcionalidad de la función y está marcado como area MustInherit .

Dado que se declaran como , las variables y están restringidas a shape los objetos de las clases derivadas y shape1 shape2 circle square . Visual Basic no permite asignar ningún otro objeto a estas variables, lo que proporciona un alto nivel de seguridad de tipos.

Uso

El MustInherit modificador se puede usar en este contexto:

Instrucción Class

Consulta también