MustInherit (Visual Basic)
Especifica que uma classe pode ser usada apenas como uma classe base e que não pode possível criar um objeto diretamente a partir dele.
Comentários
A finalidade de um classe base (também conhecido como um classe abstrata) é definir a funcionalidade comum a todas as classes que derivado dele. Isso evita que as classes derivadas ter que redefinir os elementos comuns. Em alguns casos, essa funcionalidade comum não é suficientemente completa para tornar um objeto utilizável e cada classe derivada define a funcionalidade ausente. Nesse caso, você deseja que o código toma para criar objetos somente a partir de classes derivadas. Você pode usar MustInherit na classe base para impor isso.
Outro uso de um MustInherit classe é restringir uma variável de um conjunto de classes relacionadas. Você pode definir uma classe base e derivam todas essas classes relacionadas. A classe base não precisa fornecer qualquer funcionalidade comum a todas as classes derivadas, mas ele pode servir como um filtro para atribuir valores às variáveis. Se seu código consumindo declara uma variável como a classe base, o Visual Basic permite que você atribuir apenas um objeto de uma das classes derivadas para essa variável.
A.NET Framework define vários MustInherit classes, entre eles Array, Enum, e ValueType. ValueTypeé um exemplo de uma classe base que restringe a uma variável. Derivam de todos os tipos de valor de ValueType. Se você declarar uma variável como ValueType, você pode atribuir somente os tipos de valor para a variável.
Regras
Contexto da Declaração. Você pode usar MustInherit somente em um Class instrução.
Modificadores Combinados. Não é possível especificar MustInherit em conjunto com NotInheritable na mesma declaração.
Exemplo
O exemplo a seguir ilustra a herança forçada e substituindo forçada. A classe base shape define uma variável acrossLine. As classes circle e square derivam de shape. Eles herdam a definição de acrossLine, mas eles 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. Entretanto, você não pode criar um objeto de shape porque ele não possui a funcionalidade da função area e está marcado como MustInherit.
Porque elas são declaradas como shape, as variáveis shape1 e shape2 não tem permissão para objetos de classes derivadas circle e square. Visual Basic não permite atribuir qualquer outro objeto a essas variáveis, que lhe oferece um alto nível de segurança de tipos.
Uso
O modificador MustInherit pode ser utilizado neste contexto:
Consulte também
Referência
Conceitos
Noções básicas de herança (Visual Basic)