Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Especifica que uma classe pode ser usada apenas como uma classe base e que você não pode criar um objeto diretamente a partir dela.
Observações
A finalidade de uma classe base (também conhecida como classe abstrata) é definir a funcionalidade que é comum a todas as classes derivadas dela. Isso salva as classes derivadas de ter 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 a partir 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 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
MustInheritem umaClassinstrução.Modificadores combinados. Você não pode especificar
MustInheritjunto comNotInheritablea 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 shape porque ele não tem a funcionalidade da função area e está marcado MustInherit.
Como elas são declaradas comoshape, as variáveis e shape2 são restritas a objetos das classes circle derivadas e square.shape1 O Visual Basic não permite que você atribua nenhum outro objeto a essas variáveis, o que oferece um alto nível de segurança de tipo.
Uso
O MustInherit modificador pode ser usado neste contexto: