Propriedades e métodos sobrecarregados

Sobrecarga é a criação de mais de um procedimento, construtor de instância ou propriedade em uma classe com o mesmo nome mas tipos diferentes de argumentos.

Sobrecarga de uso

Sobrecarga é especialmente útil quando o modelo de objeto determina que empregam nomes idênticos para procedimentos que operam em diferentes tipos de dados.Por exemplo, uma classe que pode exibir vários tipos de dados diferentes pode ter Display procedimentos ter esta aparência:

Overloads Sub Display(ByVal theChar As Char)
    ' Add code that displays Char data.
End Sub
Overloads Sub Display(ByVal theInteger As Integer)
    ' Add code that displays Integer data.
End Sub
Overloads Sub Display(ByVal theDouble As Double)
    ' Add code that displays Double data.
End Sub

Sem sobrecarga, você precisaria criar nomes distintos para cada procedimento, mesmo que eles fazem a mesma coisa, sistema autônomo mostra a seguinte:

Sub DisplayChar(ByVal theChar As Char)
    ' Add code that displays Char data.
End Sub
Sub DisplayInt(ByVal theInteger As Integer)
    ' Add code that displays Integer data.
End Sub
Sub DisplayDouble(ByVal theDouble As Double)
    ' Add code that displays Double data.
End Sub

Sobrecarga torna mais fácil usar propriedades ou métodos, pois ele fornece uma variedade de tipos de dados que pode ser usado.Por exemplo, o sobrecarregado Display método discutido anteriormente pode ser chamado com qualquer uma das linhas de código a seguir:

' Call Display with a literal of type Char.
Display("9"c)
' Call Display with a literal of type Integer.
Display(9)
' Call Display with a literal of type Double.
Display(9.9R)

Em time de execução, Visual Basic chamadas de que procedimento correto com base nos tipos de dados dos parâmetros você especificam.

Observação:

Sobrecarga, substituição e sombreamento são conceitos similares que podem ser facilmente confundidos.Para obter mais informações, consulte Introdução a Objetos no Visual Basic.

Sobrecarga de regras

Você criar um membro sobrecarregado para uma classe adicionando dois ou mais propriedades ou métodos com o mesmo nome.Exceto para membros sobrecarregados derivados, cada membro sobrecarregado deve ter listas de parâmetros diferentes e sistema autônomo itens a seguir não podem ser usados sistema autônomo um recurso diferencial ao sobrecarregar uma propriedade ou um procedimento:

  • Modificadores, por exemplo, ByVal ou ByRef, que se aplicam a um membro ou parâmetros do membro.

  • Nomes dos parâmetros

  • Tipos de procedimentos de retorno

The Overloads palavra-chave é opcional quando sobrecarga, porém, se houver sobrecarregado membro usa o Overloads palavra-chave e, em seguida, todos os outros membros sobrecarregados com o mesmo nome também devem especificar essa palavra-chave.

Classes derivadas podem sobrecarregar membros herdados com membros que possuem parâmetros idênticos e tipos de parâmetro, um processo conhecido sistema autônomo efeito de sombra por nome e assinatura.Se o Overloads palavra-chave é usada quando o efeito de sombra por nome e assinatura, a implementação classe derivada de membro será usada em vez da implementação da classe base e de todas as Outros sobrecargas para esse membro estarão disponível para instâncias da classe derivada.

Se o Overloads palavra-chave for omitido ao sobrecarregar um membro herdado com um membro tem parâmetros idênticos e tipos de parâmetro e, em seguida, a sobrecarga é chamado efeito de sombra por nome.Sombreamento pelo nome, substitui a implementação herdada de um membro, e torna todas as outras sobrecargas não disponível para instâncias de classe derivada e seus decedents.

The Overloads e Shadows Modificadores não podem ser usados com a mesma propriedade ou método.

Exemplo

O exemplo a seguir cria métodos sobrecarregados que aceitam tanto um String ou Decimal representação de um valor em moeda corrente e retornar uma seqüência de caracteres contendo o imposto sobre vendas.

Para usar esse exemplo para criar um método sobrecarregado

  1. Abra um novo projeto e adicione uma classe chamada TaxClass.

  2. Adicione o seguinte código à classe TaxClass:

    Public Class TaxClass
        Overloads Function TaxAmount(ByVal decPrice As Decimal, _
             ByVal TaxRate As Single) As String
            TaxAmount = "Price is a Decimal. Tax is $" & _
               (CStr(decPrice * TaxRate))
        End Function
    
        Overloads Function TaxAmount(ByVal strPrice As String, _
              ByVal TaxRate As Single) As String
            TaxAmount = "Price is a String. Tax is $" & _
               CStr((CDec(strPrice) * TaxRate))
        End Function
    End Class
    
  3. Adicione o procedimento a seguir ao seu formulário.

    Sub ShowTax()
        ' 8% tax rate.
        Const TaxRate As Single = 0.08
        ' $64.00 Purchase as a String.
        Dim strPrice As String = "64.00"
        ' $64.00 Purchase as a Decimal.
        Dim decPrice As Decimal = 64
        Dim aclass As New TaxClass
        'Call the same method with two different kinds of data.
        MsgBox(aclass.TaxAmount(strPrice, TaxRate))
        MsgBox(aclass.TaxAmount(decPrice, TaxRate))
    End Sub
    
  4. Adicionar um botão ao formulário e chamar o ShowTax procedimento a partir do Button1_Click evento do botão.

  5. Executa o projeto e clicar no botão no formulário para teste o sobrecarregado ShowTax procedimento.

Em time de execução, o compilador escolherá função sobrecarregada apropriada que corresponde aos parâmetros que está sendo usados.Quando você clica no botão, o método sobrecarregado é chamado pela primeira vez com um Priceparâmetro que é uma seqüência de caracteres e a mensagem, "preço é uma string. Imposto é $ 5,12 "é exibida.TaxAmount é chamado com um Decimalo valor na segunda vez e a mensagem, "preço é decimal. Imposto é $ 5,12 "é exibida.

Consulte também

Conceitos

Sombreamento em Visual Basic

Introdução a Objetos no Visual Basic

Sobrescrevendo propriedades e métodos

Referência

Sub-rotina demonstrativo (Visual Basic)

Sombras

ByVal

ByRef

Sobrecargas

Sombras