MustInherit (Visual Basic)
Especifica que uma classe pode ser usada somente como uma classe base e que você não pode criar um objeto diretamente a partir dela.
Observações
O objetivo de uma classe base (também conhecida como classe abstrata) é definir a funcionalidade que é comum a todas as classes derivadas dela. Isso evita que as classes derivadas tenham que redefinir os elementos comuns. Em alguns casos, essa funcionalidade comum não é completa o suficiente para tornar um objeto utilizável, e cada classe derivada define a funcionalidade ausente. Nesse caso, você deseja que o código de consumo crie objetos somente das classes derivadas. Você usa MustInherit
na classe base para impor isso.
Outro uso de uma MustInherit
classe é restringir uma variável a um conjunto de classes relacionadas. Você pode definir uma classe base e derivar todas essas classes relacionadas a partir dela. A classe base não precisa fornecer nenhuma funcionalidade comum a todas as classes derivadas, mas pode servir como um filtro para atribuir valores a variáveis. Se o código de consumo declarar uma variável como a classe base, o Visual Basic permitirá que você atribua apenas um objeto de uma das classes derivadas a essa variável.
O .NET Framework define várias MustInherit
classes, entre elas Array, Enume ValueType. ValueType é um exemplo de uma classe base que restringe uma variável. Todos os tipos de valor derivam de ValueType. Se você declarar uma variável como ValueType, poderá atribuir apenas tipos de valor a essa variável.
Regras
Contexto da Declaração. Você só pode usar
MustInherit
em umaClass
instrução.Modificadores combinados. Não é possível especificar
MustInherit
junto comNotInheritable
na mesma declaração.
Exemplo
O exemplo a seguir ilustra a herança forçada e a substituição forçada. A classe shape
base define uma variável acrossLine
. As classes circle
e square
derivam de shape
. Eles herdam a definição de acrossLine
, mas devem definir a função area
porque esse cálculo é 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
Você pode declarar shape1
e shape2
ser do tipo shape
. No entanto, você não pode criar um objeto a partir de shape
porque ele não tem a funcionalidade da função area
e está marcado MustInherit
.
Porque eles são declarados como shape
, as variáveis shape1
e shape2
são restritas a objetos das classes circle
derivadas e square
. Visual Basic não permite que você atribua qualquer outro objeto a essas variáveis, o que lhe dá um alto nível de segurança de tipo.
Utilização
O MustInherit
modificador pode ser usado neste contexto: