Ero ohittamisen ja ylikuormituksen välillä

Ohittaminen vs ylikuormitus

Menetelmän ohittaminen ja menetelmän ylikuormitus ovat kaksi konseptia / tekniikkaa / ominaisuutta, joita löytyy joillakin ohjelmointikieleillä. Molemmat käsitteet antavat ohjelmoijalle mahdollisuuden tarjota erilaisia ​​toteutuksia menetelmille, joilla on sama nimi. Menetelmän ohittaminen antaa ohjelmoijalle mahdollisuuden tarjota vaihtoehtoinen toteutus alaluokassa menetelmälle, joka on jo määritelty superluokansa sisällä. Menetelmän ylikuormitus antaa ohjelmoijalle mahdollisuuden tarjota erilaisia ​​toteutuksia useille menetelmille, joilla on sama nimi (saman luokan sisällä).

Mikä on pakottavaa?

Kuten edellä mainittiin, luokka voi laajentaa superluokan tai vanhemman luokan olio-ohjelmointikielellä. Lastenluokalla voi olla omat menetelmänsä tai valinnaisesti omat toteutuksensa menetelmiin, jotka on jo määritelty vanhemmuusluokassaan (tai johonkin sen isovanhempiin luokkiin). Joten kun jälkimmäinen tapahtuu, sitä kutsutaan menetelmän ohittamiseksi. Toisin sanoen, jos lastenluokka tarjoaa toteutuksen menetelmälle, jolla on sama allekirjoitus- ja palautustyyppi kuin menetelmällä, joka on jo määritelty yhdessä sen vanhemmuusluokista, kyseisen menetelmän sanotaan olevan ohitettu (korvattu) lapsiluokan toteuttamisella. . Joten jos luokassa on ohitettu menetelmä, suoritusjärjestelmän on päätettävä, mitä menetelmän toteutusta käytetään. Tämä ongelma ratkaistaan ​​tarkastelemalla tarkkaa objektityyppiä, jota käytetään sen käynnistämiseen. Jos ylemmän luokan objektia käytetään ohitetun menetelmän käyttämiseen, käytetään vanhemman luokan toteutusta. Samoin jos käytetään lasten luokan objektia, niin käytetään lapsiluokan toteutusta. Nykyaikaiset ohjelmointikielet, kuten Java, Eifell, C ++ ja Python, mahdollistavat menetelmän ohittamisen.

Mikä on ylikuormitus?

Menetelmän ylikuormitus on ominaisuus, jonka jotkin ohjelmointikielet tarjoavat useamman kuin yhden menetelmän luomiseksi samalla nimellä, mutta eri tulo- ja lähtötyypeillä. Nykyaikaisissa ohjelmointikielissä, kuten Java, C #, C ++ ja VB.NET, tämä ominaisuus on käytettävissä. Voit ylikuormittaa menetelmää luomalla toisen menetelmän samalla nimellä, mutta toisella menetelmän allekirjoituksella tai eri palautustyypillä (tai molemmilla). Esimerkiksi, jos sinulla on menetelmä1 (tyyppi1 t1) ja menetelmä1 (tyyppi2 t2) samassa luokassa, ne ovat ylikuormitettuja. Sitten järjestelmän on päätettävä, mikä suoritetaan, kun sitä kutsutaan. Tämä erottelu tehdään tarkastelemalla menetelmään siirrettyjen parametrien tyyppiä. Jos argumentti on tyyppiä 1, niin ensimmäistä toteutusta kutsutaan, kun taas jos se on tyyppiä 2, niin toista toteutusta kutsutaan..

Mitä eroa ohittamisen ja ylikuormituksen välillä on??

Vaikka menetelmän ohittamista ja menetelmän ylikuormitusta käytetään menetelmän tarjoamiseksi erilaisilla toteutuksilla, näiden kahden käsitteen / tekniikan välillä on keskeisiä eroja. Ensinnäkin menetelmän ohittaminen pysyy aina eri luokissa, kun taas ylikuormitusmenetelmät pysyvät saman luokan sisällä. Tämä tarkoittaa, että ohittaminen on mahdollista vain perinnöllisyyttä sallivissa olio-ohjelmointikielissä, kun taas ylikuormitus voi olla saatavana myös muulla kuin oliokeskeisellä kielellä. Toisin sanoen ohitat menetelmän superluokassa, mutta ylikuormitat menetelmän omassa luokassasi.

Toinen ero on, että ohitettavilla menetelmillä on sama metodinimi, menetelmän allekirjoitus ja paluutyyppi, mutta ylikuormitettujen menetelmien on oltava erilaiset joko allekirjoituksessa tai paluutapauksessa (nimen on oltava sama). Kahden ohitetun menetelmän erottamiseksi tarkkaan objektityyppiin, jota käytetään käyttämään käytettyjä menetelmiä, kun taas kahden ylikuormitetun menetelmän erottamiseen käytetään parametrityyppejä. Toinen tärkeä ero on, että ylikuormitus ratkaistaan ​​käännöshetkellä, kun taas ylikuormitus ratkaistaan ​​ajon aikana.