MustInherit (Visual Basic)
Specifies that a class can be used only as a base class and that you cannot create an object directly from it.
Comentários
A finalidade de um classe base (também conhecido como um abstrata classe) é definir a funcionalidade que é 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 é completa para tornar um objetode utilizável e cada derivada de classe define a funcionalidade ausente. Nesse caso, você deseja o código consumindo criar objetos somente a partir de classes derivadas. Você pode usar MustInherit na classe base para impor isso.
Outro uso de um deMustInheritclasse é restringir uma variável para um conjunto de classes relacionadas. Você pode definir uma classe base e derivam todas essas classes relacionadas. A classe base não precisará fornecer qualquer funcionalidade comum a todas as classes derivadas, mas ele pode servir como um filtro para atribuir valores a variáveis. Se seu código consumindo declara uma variável como a classe base, Visual Basic permite atribuir apenas um objeto de uma das classes derivadas para a variável.
A.NET Framework define vários MustInherit classes, entre eles Array, Enum, e ValueType. ValueTypeé um exemplo de classe base restringe a uma variável. Derivam deTudo 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.
Rules
Declaration Context. Você pode usar MustInherit somente em um Class demonstrativo.
Combined Modifiers. 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 baseshape define uma variávelde 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. No entanto, 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 são restritos aos objetos de classes derivadas circle e square. Visual Basic não permite atribuir a outro objeto a essas variáveis, que lhe oferece um alto nível de segurança de tipos.
Usage
The MustInherit modifier can be used in this context:
Consulte também
Referência
Conceitos
Noções básicas de herança (Visual Basic)