Propriedades e métodos sobrecarregados (Visual Basic)
Sobrecarga é a criação de mais de um procedimento, construtorde instância ou propriedade em uma classe com o mesmo nome mas o argumento de diferentes tipos.
Uso de sobrecarga.
Sobrecarga é especialmente útil quando o seu modelo de objeto determina que empregam o nomes idênticos de procedimentos que operam em diferentes tipos de dados. Por exemplo, uma classe que pode exibir vários tipos de dados diferentes poderia ter Display procedimentos 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, como mostrado a seguir:
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 se torna mais fácil de usar propriedades ou métodos, pois oferece uma variedade de tipos de dados que podem ser usados. Por exemplo, a sobrecarga 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 tempo de execução, Visual Basic chamadas de procedimento correto com base nos tipos de dados dos parâmetros você especificar.
Regras de sobrecarga.
Você criar um membro sobrecarregadas para uma classe adicionando dois ou mais propriedades ou métodos com o mesmo nome. Exceto para membros derivados sobrecarregados, cada membro sobrecarregadas deve ter um parâmetro de diferentes listas e itens a seguir não podem ser usados como um diferencial de recurso ao sobrecarregar uma propriedade ou um procedimento:
Modificadores, como ByVal ou ByRef, que aplicar a um membro ou parâmetros do membro.
Nomes de parâmetros
Tipos de procedimentos de retorno
O Overloads palavra-chave é opcional quando a sobrecarga, mas se houver sobrecarregado membro usa a Overloads palavra-chavee, em seguida, todos os outros membros sobrecarregados com o mesmo nome também devem especificar essa palavra-chave.
Classes derivadas podem sobrecarga herdadas membros com membros que possuem parâmetros idênticos e tipos de parâmetro , um processo conhecido como sombreamento pelo nome e assinatura. Se a Overloadspalavra-chave é usada quando o sombreamento pelo nome e assinatura, o membro derivados da classede implementação será usada em vez da implementação na classe base, e todas as outras sobrecargas para esse membro estará disponíveis para as instâncias da classederivada.
Se o Overloads palavra-chave for omitida quando a sobrecarga de um membro herdado com um membro que tenha parâmetros idênticos e tipos de parâmetro , em seguida, a sobrecarga é chamado sombreamento pelo nome,. Sombreamento pelo nome, substitui a implementação herdada de um membro e torna todas as outras sobrecargas indisponível para instâncias de classe derivada e suas decedents.
O Overloads e Shadows modificadores não podem ser usados com a mesma propriedade ou método.
Example
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étodode sobrecarregado
Abra um novo projeto e adicionar uma classe chamada TaxClass.
Add the following code to the TaxClass class.
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
Adicionar o seguinte procedimento para o 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
Adicionar um botão para seu formulário e a chamada a ShowTax procedimento a partir de Button1_Click evento do botão.
Executar o projeto e clique no botão no formulário para teste a sobrecarga ShowTax procedimento.
Em tempo de execução, o compilador escolhe que apropriadas sobrecarregado de função 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 Price parâmetro que é uma seqüência de caracteres e a mensagem "o preço é uma seqüência de caracteres. Imposto é $5,12 " é exibida. TaxAmounté chamado com um Decimal valor pela segunda vez e a mensagem "o preço é um Decimal. Imposto é $5,12 " é exibida.
Consulte também
Referência
Conceitos
Noções básicas de herança (Visual Basic)