Compartilhar via


Noções básicas de herança

A declaração Inherits é usada para declarar uma nova classe, chamada de classe derivada, com base em uma classe existente, conhecida como classe base.Classes derivadas herdam e podem estender, propriedades, métodos, eventos, campos e constantes definidas na classe base.A seção a seguir descreve algumas das regras de herança e os modificadores que você pode usar para alterar as classes de forma herdam ou são herdados:

  • Por padrão, todas as classes são herdáveis a não ser que estejam marcados com o NotInheritable palavra-chave. Classes podem herdar de outras classes em seu projeto ou de classes em outros módulos (assemblies) que faz referência a seu projeto.

  • Ao contrário das linguagens que permitem a herança múltipla, Visual Basic permite a herança única somente em classes; ou seja, as classes derivadas podem ter apenas uma classe base. Embora a herança múltipla não é permitida em classes, classes podem implementar várias interfaces, podem realizar com eficácia extremidades mesmas.

  • Para evitar expor restritos itens em uma classe base, o tipo de acesso de uma classe derivada deve ser igual ou mais restritivo do que sua classe base.Por exemplo, um Public classe não pode herdar um Friend ou um Private classe e um Friend classe não pode herdar um Private classe.

Modificadores de herança

Visual Basic apresenta as seguintes declarações de nível de classe e modificadores para oferecer suporte a herança:

  • Inherits demonstrativo — Especifica a classe base.

  • NotInheritable modificador — impede que sistema autônomo programadores usando a classe sistema autônomo uma classe base.

  • MustInherit modificador — Especifica que a classe deve ser usado sistema autônomo classe base somente. Instâncias de MustInherit classes não podem ser criados diretamente; eles só podem ser criados instâncias de classe sistema autônomo base de uma classe derivada. (Outros linguagens de programação, sistema autônomo C++ e translation from VPE for Csharp, usem o termo classe abstrata para descrever essa classe.)

Sobrescrevendo propriedades e métodos em classes derivadas

Por padrão, uma classe derivada herda propriedades e métodos de sua classe base.Se uma propriedade herdada ou método tem se comportem de forma diferente na classe derivada pode ser substituído.Ou seja, você pode definir uma nova implementação do método na classe derivada.Seguintes modificadores são usados para controlar como as propriedades e métodos são substituídos:

  • Overridable — Permite que uma propriedade ou método em uma classe a ser substituído em uma classe derivada.

  • Overrides — Substitui uma Overridable propriedade ou método definido na classe base.

  • NotOverridable — Impede uma propriedade ou método que está sendo substituído em uma classe herdada. Por padrão, Public os métodos são NotOverridable.

  • MustOverride — Exige que uma classe derivada substituir a propriedade ou método. Quando o MustOverride palavra-chave é usada, a definição do método consiste apenas do Sub, Function, ou Property demonstrativo. Outras instruções não são permitidas e não há especificamente nenhuma End Sub ou End Function demonstrativo. MustOverride os métodos devem ser declarados como em MustInherit classes.

Para obter mais informações sobre métodos, consulte Sobrescrevendo propriedades e métodos.

A palavra-chave MyBase

Você pode usar o MyBase palavra-chave para telefonar métodos na classe base quando você substituir métodos em uma classe derivada. Por exemplo, suponha que você está criando uma classe derivada que substitui um método herdado da classe base.O método substituído pode chamar o método na classe base e modifique o valor retornado conforme mostrado no fragmento de código a seguir:

Class DerivedClass
    Inherits BaseClass
    Public Overrides Function CalculateShipping( _
        ByVal Dist As Double, _
        ByVal Rate As Double) _
        As Double
        ' Call the method in the base class and modify the return value.
        Return MyBase.CalculateShipping(Dist, Rate) * 2
    End Function
End Class

A lista a seguir descreve as restrições sobre o uso de MyBase:

  • MyBase refere-se a classe base imediata e seus membros herdados. Ele não pode ser usado para acessar Private membros da classe.

  • MyBase é uma palavra-chave, não um objeto real. MyBase não pode ser atribuído a uma variável, passados para procedimentos ou usado em um Is comparação.

  • O método que MyBase qualifica não precisa ser definida na classe base imediata; em vez disso, podem ser definido de uma classe base indiretamente herdada. Para que uma referência qualificada pela MyBase para compilar corretamente, alguns classe base deve conter um método de correspondência de nome e tipos de parâmetros que aparecem na telefonar.

  • Não é possível usar MyBase para telefonar MustOverride métodos da classe base.

  • MyBase não pode ser usado para qualificar-se. Portanto, o código a seguir inválido:

    MyBase.MyBase.BtnOK_Click()

  • MyBase não pode ser usado nos módulos.

  • MyBase não pode ser usado para acessar membros de classe base que são marcados sistema autônomo Friend Se a classe base estiver em um assembly diferente.

A palavra-chave MyClass

The MyClass palavra-chave permite que você chamar um Overridable método implementado na sua classe e certifique-se de que essa implementação do método nesta classe é telefonar em vez de um método substituído em uma classe derivada.

  • MyClass é uma palavra-chave, não um objeto real. MyClass não pode ser atribuído a uma variável, passados para procedimentos ou usado em um Is comparação.

  • MyClass refere-se a classe recipiente e seus membros herdados.

  • MyClass pode ser usado sistema autônomo um qualificador para Shared membros.

  • MyClass não pode ser usado em módulos padrão.

  • MyClass pode ser usado para qualificar um método que está definido na classe base e que não tem implementação do método fornecida na classe. sistema autônomo uma referência tem o mesmo significado sistema autônomo MyBase.Método.

Consulte também

Tarefas

Como: Criar classes derivadas

Conceitos

Sobrescrevendo propriedades e métodos

Referência

Declaração Inherits

Outros recursos

Alterações na Linguagem para Usuários do Visual Basic 6.0