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 uma Class instrução.

  • Modificadores combinados. Não é possível especificar MustInherit junto com NotInheritable 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:

Declaração de classe

Consulte também