Skirtumas tarp nepaisymo ir perkrovimo

Skirtumas tarp nepaisymo ir perkrovimo
Skirtumas tarp nepaisymo ir perkrovimo

Video: Skirtumas tarp nepaisymo ir perkrovimo

Video: Skirtumas tarp nepaisymo ir perkrovimo
Video: Prioritetinių sektorių eksporto strategijos: kur norime būti po 10-ties metų 2024, Liepa
Anonim

Nepaisymas vs perkrovimas

Metodas Nepaisymas ir metodas Perkrovimas yra dvi sąvokos / metodai / funkcija, randama kai kuriose programavimo kalbose. Abi koncepcijos leidžia programuotojui pateikti skirtingus to paties pavadinimo metodų įgyvendinimus. Metodo nepaisymas leidžia programuotojui poklasėje pateikti alternatyvų metodą, jau apibrėžtą jo superklasėje. Metodo perkrova leidžia programuotojui pateikti skirtingus diegimus keliems metodams tuo pačiu pavadinimu (toje pačioje klasėje).

Kas yra nepaisoma?

Kaip minėta, klasė gali išplėsti superklasę arba pirminę klasę objektinėmis programavimo kalbomis. Antrinė klasė gali turėti savo metodus arba pasirinktinai gali turėti savo įdiegimus metodams, kurie jau apibrėžti pagrindinėje klasėje (arba vienoje iš pagrindinių pirminių klasių). Taigi, kai atsitinka pastarasis, jis vadinamas metodo nepaisymu. Kitaip tariant, jei antrinė klasė pateikia metodo įgyvendinimą su tuo pačiu parašu ir grąžinimo tipu kaip ir metodas, jau apibrėžtas vienoje iš pirminių klasių, sakoma, kad šis metodas yra nepaisomas (pakeistas) antrinės klasės įgyvendinimu.. Taigi, jei klasėje yra nepaisytas metodas, vykdymo sistema turės nuspręsti, kuris metodas naudojamas. Ši problema išspręsta pažvelgus į tikslų objekto tipą, kuris naudojamas jai iškviesti. Jei pirminės klasės objektas naudojamas nepaisytam metodui iškviesti, tada naudojamas įgyvendinimas pirminėje klasėje. Panašiai, jei naudojamas antrinės klasės objektas, naudojamas antrinės klasės įgyvendinimas. Šiuolaikinės programavimo kalbos, tokios kaip Java, Eifell, C++ ir Python, leidžia nepaisyti metodų.

Kas yra perkrova?

Metodų perkrovimas yra kai kurių programavimo kalbų teikiama funkcija, leidžianti sukurti daugiau nei vieną metodą tuo pačiu pavadinimu, bet skirtingais įvesties ir išvesties tipais. Šiuolaikinėse programavimo kalbose, tokiose kaip Java, C, C++ ir VB. NET, ši funkcija pasiekiama. Galite perkrauti metodą sukurdami kitą metodą tuo pačiu pavadinimu, bet su skirtingu metodo parašu arba skirtingu grąžinimo tipu (arba abu). Pavyzdžiui, jei toje pačioje klasėje yra 1 metodas (1 tipas t1) ir metodas1 (2 tipas t2), jie yra perkrauti. Tada sistema turės nuspręsti, kurią iš jų vykdyti, kai ji bus iškviesta. Šis skirtumas atliekamas atsižvelgiant į metodui perduoto (-ų) parametro (-ų) tipą. Jei argumentas yra 1 tipo, tada iškviečiamas pirmasis įgyvendinimas, o jei jis yra 2 tipo, tada iškviečiamas antrasis įgyvendinimas.

Kuo skiriasi nepaisymas ir perkrovimas?

Nors metodo nepaisymas ir metodo perkrovimas naudojami norint pateikti metodą su skirtingais įgyvendinimais, yra esminių skirtumų tarp šių dviejų sąvokų / metodų. Visų pirma, metodo nepaisymo dalykai visada būna skirtingose klasėse, o metodo perkrovimo dalykai – toje pačioje klasėje. Tai reiškia, kad nepaisymas galimas tik objektinės programavimo kalbose, kurios leidžia paveldėti, o perkrovimas gali būti prieinamas ir neobjektyvioje kalboje. Kitaip tariant, jūs nepaisote metodo super klasėje, bet perkraunate metodą savo klasėje.

Kitas skirtumas yra tas, kad nepaisyti metodai turi tą patį metodo pavadinimą, metodo parašą ir grąžinimo tipą, tačiau perkrauti metodai turi skirtis arba parašu, arba grąžinimo tipu (pavadinimas turi būti toks pat). Siekiant atskirti du nepaisytus metodus, tikslaus tipo objekto, kuris naudojamas iškviesti metodus id, tipą, o norint atskirti du perkrautus metodus, naudojami parametrų tipai. Kitas esminis skirtumas yra tas, kad perkrovimas išsprendžiamas kompiliavimo metu, o nepaisymas – vykdymo metu.

Rekomenduojamas: