„Java“ perkrovimo metodo pranašumai ir trūkumai

Perkrauti metodai yra tos pačios klasės metodai, kurie turi tą patį pavadinimą, bet priima skirtingus kintamųjų tipus kaip argumentus. Pavyzdžiui, klasėje gali būti du skirtingi „pridėjimo“ metodai: vienas, kuris priima dvi dvigubas reikšmes, „add (dvigubas a, dvigubas b)“ ir kitas, kuris priima dvi sveikųjų skaičių reikšmės, "add (int a, int b)." Kompiuteris automatiškai nusprendžia, kurį metodą iškviesti vykdymo metu, atsižvelgdamas į kintamųjų tipus, perduodamus metodas.

Lankstumas

Perkrauti metodai suteikia programuotojams lankstumo iškviesti panašų metodą skirtingų tipų duomenims. Pavyzdžiui, jei dirbate su matematikos programa, galite naudoti perkrovą, kad sukurtumėte kelias "daugybos" klases, kiekvienas iš jų padaugina skirtingą argumentų tipų skaičių: paprasčiausias „padauginti (int a, int b)“ padaugina du sveikieji skaičiai; sudėtingesnis metodas „dauginti (dvigubai a, int b, int c)“ padaugina vieną dvigubą skaičių iš dviejų sveikųjų skaičių – tada galėtumėte iškvieskite „dauginti“ bet kuriame kintamųjų derinyje, kuriam sukūrėte perkrautą metodą, ir gaukite tinkamą rezultatą.

Dienos vaizdo įrašas

Konstruktoriai

Perkrovimas taip pat naudojamas konstruktoriams kuriant naujus objektus, atsižvelgiant į skirtingus duomenų kiekius. Pavyzdžiui, galite naudoti perkrovimą, kad sukurtumėte tris skirtingus „Namo“ objekto konstruktorius su namo numeriu, gatvės pavadinimu ir spalvų kintamaisiais. Paprasčiausias konstruktorius "House()" nepriima argumentų ir sukuria namą su numatytais arba tuščiais kintamaisiais. Sudėtingesnis konstruktorius „House (int houseNumber, String streetName)“ sukuria namą su nurodytu namo numeriu ir gatvės pavadinimu, bet numatytąją arba tuščią spalvą. Sudėtingiausias konstruktorius „House (int houseNumber, String streetName, String color)“ sukuria namą su visa nurodyta informacija, nepalikdamas nieko kaip numatytasis. Tada galite sukurti namo objektą pagal šiuo metu turimą informaciją, o nepasiekiamą informaciją palikite tuščią arba pagal numatytuosius nustatymus.

Dviprasmiškos nuorodos

Perkrautuose metoduose turi būti naudojami skirtingi argumentų skaičiai arba tipai, kad būtų išvengta dviprasmybių. Jei toje pačioje klasėje sukuriate du metodus, turinčius tą patį pavadinimą ir priimate du sveikuosius skaičius kaip argumentus, „Java“ kompiliatorius negalės atskirti šių dviejų, net jei įvesties kintamieji turi skirtingus pavadinimus. Pavyzdžiui, metodas „add (int a, int b)“ negali egzistuoti toje pačioje klasėje kaip metodas „add (int c, int d).“

Grąžinimo tipai

Turite apibrėžti kiekvieno perkrauto metodo grąžinimo tipą. Metodai gali turėti skirtingus grąžinimo tipus – pavyzdžiui, „add (int a, int b)“ gali grąžinti sveikąjį skaičių, o „add (double a, double b)“ grąžina dvigubą skaičių. Tačiau „Java“ negali atskirti dviejų skirtingų metodų pagal jų grąžinimo tipą. Todėl „int daugyba (dvigubai a, dvigubai b)“ negali egzistuoti toje pačioje klasėje kaip „dvigubai dauginti (dvigubai a, dvigubai b).“