Przeciążone właściwości i metod (Visual Basic)
Przeciążenie jest stworzenie procedury więcej niż jeden, konstruktora instancji lub właściwości klasy o takiej samej nazwie, ale argument różnych typów.
Przeciążanie użycia
Przeciążenie jest szczególnie przydatne w przypadku, gdy model obiektu decyduje o tym, że aby zatrudnić identycznych nazw dla procedur, które działają na różnych typach danych.Na przykład klasy, który może wyświetlać kilka różnych typów danych może mieć Display procedur, które wyglądają następująco:
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
Bez przeciążenia, trzeba utworzyć różne nazwy dla każdej procedury, mimo że one zrobić to samo, jak pokazano poniżej:
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
Przeciążanie ułatwia używać właściwości lub metod, ponieważ zapewnia wybór typów danych, które mogą być używane.Na przykład, przeciążone Display metoda omówionych wcześniej może być wywołana z jakąkolwiek z następujących wierszy kodu:
' 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)
W czasie wykonywania Visual Basic określić poprawną procedurę można oparte na typy danych parametrów wywołania.
Przeciążanie zasady
Członka przeciążony dla klasy tworzy się przez dodanie dwóch lub więcej właściwości lub metod o tej samej nazwie.Z wyjątkiem przeciążony członków pochodnych, każdy członek przeciążony musi mieć parametr różnych list, oraz następujące elementy nie można używać jako funkcja różnego przeciążania właściwości lub procedury:
Modyfikatory, takich jak ByVal lub ByRef, które stosują się do członka lub parametrów elementu członkowskiego.
Nazwy parametrów
Zwracanych typów procedur
Overloads Przeciążania, słowo kluczowe jest opcjonalne, ale ewentualne przeciążony Członkowskie używa Overloads słowa kluczowego, a następnie wszystkie inne przeciążony członków o tej samej nazwie należy także określić tego słowa kluczowego.
Klasy pochodne można przeciążania dziedziczonych członków z członków, które mają identyczne parametry i typy parametrów, proces znany jako przesłanianie przez nazwisko i podpis.Jeśli Overloads użyć słowa kluczowego, gdy przesłanianie przez nazwisko i podpis, implementacji klasy pochodnej członka będzie używany zamiast wykonania w klasie bazowej i innych overloads dla tego członka, będą dostępne dla wystąpienia klasy pochodnej.
Jeśli Overloads słowa kluczowego pominięto przeciążania dziedziczonego członka z członkiem, który ma identyczne parametry i typy parametrów, a następnie przeciążenie jest nazywany przesłanianie przez nazwę.Przesłanianie według nazwy zastępuje dziedziczone wykonania członka i go powoduje, że wszystkie inne overloads jest niedostępny do wystąpień klasy pochodnej i jego decedents.
Overloads i Shadows modyfikatorów nie można używać z tej samej właściwości lub metody.
Przykład
Poniższy przykład tworzy Metody przeciążane, które akceptują albo String lub Decimal reprezentację Dolar kwoty i zwrot ciąg zawierający podatku od sprzedaży.
Aby użyć w tym przykładzie do utworzenia przeciążona metoda
Otwórz nowy projekt i dodać klasę o nazwie TaxClass.
Dodaj następujący kod do TaxClass klasy.
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
Poniższej procedury można dodać do formularza.
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
Dodawanie przycisku do formularza i wywołanie ShowTax procedurę z Button1_Click zdarzenia przycisku.
Uruchom projekt i kliknij przycisk na formularzu, aby przetestować przeciążony ShowTax procedury.
W czasie wykonywania kompilator wybiera odpowiadający parametry używane odpowiednich funkcji zastąpionej.Po kliknięciu przycisku, przeciążona metoda jest wywoływana pierwszy z Price parametr, który jest ciągiem i wiadomość "cena jest ciągiem.Podatek jest $5.12 "jest wyświetlany.TaxAmountjest wywoływana z Decimal wartość po raz drugi i wiadomości, "ułamek dziesiętny jest cena.Podatek jest $5.12 "jest wyświetlany.
Zobacz też
Informacje
Koncepcje
Cieniowanie w języku Visual Basic
Dziedziczenie podstawy (Visual Basic)