Svarbiausia ir perkrova
Metodas Overriding ir metodas Overloading yra dvi sąvokos / metodai / ypatybės, randamos kai kuriose programavimo kalbose. Abi sąvokos leidžia programuotojui pateikti skirtingus metodų su tuo pačiu pavadinimu įgyvendinimus. Metodo nepaisymas leidžia programuotojui pateikti alternatyvų įgyvendinimą subklasėje, palyginti su metodu, jau apibrėžtu jo superklasėje. Metodo perkrova leidžia programuotojui pateikti skirtingus diegimus keliems metodams su tuo pačiu pavadinimu (toje pačioje klasėje).
Kas yra svarbiausia?
Kaip minėta pirmiau, klasė gali išplėsti super klasę arba tėvų klasę objektyviomis programavimo kalbomis. Vaiko klasė gali turėti savo metodus arba pasirinktinai pritaikyti metodus, jau apibrėžtus jos tėvų klasėje (arba vienoje iš senelių klasių). Taigi, kai įvyksta pastarasis, tai vadinama metodo viršijimu. Kitaip tariant, jei vaikų klasė pateikia metodą su tuo pačiu parašu ir grąžinimo tipu kaip metodas, jau apibrėžtas vienoje iš tėvų klasių, sakoma, kad šis metodas yra nepaisomas (pakeičiamas) įgyvendinant vaikų klasę. Taigi, jei klasėje yra nepaisomas metodas, vykdymo laiko sistema turės nuspręsti, kuris metodas bus naudojamas. Ši problema išspręsta ieškant tikslaus objekto tipo, kuris naudojamas jam iškviesti. Jei pradinių klasių objektas naudojamas perrašytam metodui iškviesti, tada naudojamas įgyvendinimas tėvų klasėje. Panašiai, jei tai yra vaikų klasės objektas, naudojamas vaikų klasės įgyvendinimas. Šiuolaikinės programavimo kalbos, tokios kaip „Java“, „Eifell“, „C ++“ir „Python“, leidžia metodo nepaisyti.
Kas yra perkrova?
Metodo perkrova yra funkcija, kurią teikia kai kurios programavimo kalbos, kad būtų galima sukurti daugiau nei vieną metodą tuo pačiu pavadinimu, tačiau skirtingais įvesties ir išvesties tipais. Šiuolaikinėmis programavimo kalbomis, tokiomis kaip Java, C #, C ++ ir VB. NET, ši funkcija yra prieinama. Galite perkrauti metodą sukurdami kitą metodą tuo pačiu pavadinimu, bet su kitu metodo parašu arba kitokiu grąžinimo tipu (arba abiem). Pvz., Jei tos pačios klasės viduje yra metodas1 (tipas1 t1) ir metodas1 (tipas2t2), tada jie yra perkrauti. Tada sistema turės nuspręsti, kuri bus vykdoma, kai ji bus iškviesta. Ši diferenciacija atliekama atsižvelgiant į metodo perduotų parametrų tipą. Jei argumentas yra 1 tipo, tada vadinamas pirmasis įgyvendinimas, o jei jis yra 2 tipo, tada vadinamas antrasis įgyvendinimas.
Kuo skiriasi nepaisoma ir perkrova?
Nors metodo perteikimas ir metodo perkrova yra naudojami pateikiant metodą su skirtingais įgyvendinimo būdais, tarp šių dviejų sąvokų / metodų yra esminių skirtumų. Visų pirma, metodo viršijimo dalykai visada būna skirtingose klasėse, o metodo perkrovos dalykai - toje pačioje klasėje. Tai reiškia, kad nepaisyti galima tik objektuose orientuotose programavimo kalbose, leidžiančiose paveldėti, o perkrovos gali būti ir ne objektu orientuotomis kalbomis. Kitaip tariant, jūs nepaisote metodo super klasėje, bet perkraunate metodą savo klasėje.
Kitas skirtumas yra tas, kad nepaisomi metodai turi tą patį metodo pavadinimą, metodo parašą ir grąžinimo tipą, tačiau perkrauti metodai turi skirtis nei parašo, nei grąžinimo tipu (pavadinimas turėtų būti toks pats). Norint atskirti du nepaisomus metodus, naudojamas tikslus objekto tipas, kuris naudojamas naudojamiems metodams iškviesti, o norint atskirti du perkrautus metodus, naudojami parametrų tipai. Kitas esminis skirtumas yra tas, kad perkrova išsprendžiama kompiliavimo metu, o nepaisymas - vykdymo metu.