Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A túlterhelés több eljárás, példánykonstruktor vagy tulajdonság létrehozása egy azonos nevű, de különböző argumentumtípusú osztályban.
A túlterhelés különösen akkor hasznos, ha az objektummodell azt diktálja, hogy azonos neveket használjon a különböző adattípusokon működő eljárásokhoz. Például egy osztály, amely több különböző adattípust jeleníthet meg, az alábbihoz hasonló eljárásokkal rendelkezhet Display
:
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
Túlterhelés nélkül külön neveket kell létrehoznia az egyes eljárásokhoz, még akkor is, ha ugyanazt teszik, mint a következő:
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
A túlterhelés megkönnyíti a tulajdonságok vagy metódusok használatát, mivel számos használható adattípust biztosít. A korábban tárgyalt túlterhelt Display
metódus például a következő kódsorok bármelyikével hívható meg:
' 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)
Futásidőben a Visual Basic a megfelelő eljárást hívja meg a megadott paraméterek adattípusai alapján.
Egy osztályhoz túlterhelt tagot úgy hozhat létre, hogy két vagy több azonos nevű tulajdonságot vagy metódust ad hozzá. A túlterhelt származtatott tagok kivételével minden túlterhelt tagnak eltérő paraméterlistával kell rendelkeznie, és a következő elemek nem használhatók megkülönböztető funkcióként egy tulajdonság vagy eljárás túlterhelése esetén:
A tagra vonatkozó módosítók, például
ByVal
vagyByRef
, a tag paraméterei.Paraméterek nevei
Az eljárások visszatérési típusai
A Overloads
kulcsszó túlterhelés esetén nem kötelező, de ha bármely túlterhelt tag használja a Overloads
kulcsszót, akkor az azonos nevű többi túlterhelt tagnak is meg kell adnia ezt a kulcsszót.
A származtatott osztályok túlterhelhetik az örökölt tagokat olyan tagokkal, amelyek azonos paraméterekkel és paramétertípusokkal rendelkeznek. Ezt a folyamatot név és aláírás alapján árnyékolásnak nevezzük. Ha a kulcsszót Overloads
név és aláírás alapján árnyékoláskor használja a rendszer, a rendszer a tag származtatott osztályát használja ahelyett, hogy az alaposztályban implementáció lenne, és az adott tag összes többi túlterhelése elérhető lesz a származtatott osztály példányai számára.
Ha a Overloads
kulcsszó nincs megadva, amikor egy öröklött tagot olyan taggal terhel túl, amely azonos paraméterekkel és paramétertípusokkal rendelkezik, akkor a túlterhelést név szerint árnyékolásnak nevezzük. A név szerinti árnyékolás a tag örökölt implementációját váltja fel, és az összes többi túlterhelést elérhetetlenné teszi a származtatott osztály és annak decedents példányai számára.
A Overloads
módosítók és Shadows
a módosítók nem használhatók ugyanazzal a tulajdonsággal vagy módszerrel.
Az alábbi példa túlterhelt metódusokat hoz létre, amelyek elfogadják a dollárösszeget String
vagy Decimal
annak ábrázolását, és visszaadják a forgalmi adót tartalmazó sztringet.
Nyisson meg egy új projektet, és adjon hozzá egy osztályt
TaxClass
.Adja hozzá az alábbi kódot a
TaxClass
osztályhoz.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
Adja hozzá az alábbi eljárást az űrlaphoz.
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
Adjon hozzá egy gombot az űrlaphoz, és hívja meg az
ShowTax
eljárást aButton1_Click
gomb eseményéből.Futtassa a projektet, és kattintson az űrlap gombra a túlterhelt
ShowTax
eljárás teszteléséhez.
Futásidőben a fordító kiválasztja a megfelelő túlterhelt függvényt, amely megfelel a használt paramétereknek. Amikor a gombra kattint, a rendszer először meghívja a túlterhelt metódust egy Price
sztringet tartalmazó paraméterrel, és a következő üzenettel: "Az ár sztring. Az adó 5,12 usd" jelenik meg. TaxAmount
a rendszer második alkalommal meghívja egy Decimal
értékkel, és a következő üzenettel: "Az ár decimális. Az adó 5,12 usd" jelenik meg.
.NET -visszajelzés
A(z) .NET egy nyílt forráskód projekt. Visszajelzés adásához válasszon egy hivatkozást: