Share via


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:

Class Statement

Consulte também

Referência

Declaração Inherits

NotInheritable (Visual Basic)

Conceitos

Noções básicas de herança (Visual Basic)

Outros recursos

Palavras-chave (Visual Basic)