Ero Ohittamisen Ja Ylikuormituksen Välillä

Ero Ohittamisen Ja Ylikuormituksen Välillä
Ero Ohittamisen Ja Ylikuormituksen Välillä

Video: Ero Ohittamisen Ja Ylikuormituksen Välillä

Video: Ero Ohittamisen Ja Ylikuormituksen Välillä
Video: Как укладывать декоративный камень!? / Облицовка цоколя / Возможные ошибки 2024, Marraskuu
Anonim

Korvaava vs. ylikuormitus

Menetelmän ohittaminen ja menetelmän ylikuormitus ovat kaksi käsitettä / tekniikkaa / ominaisuutta, joita löytyy joillakin ohjelmointikielillä. Molemmat käsitteet sallivat ohjelmoijan tarjota erilaisia toteutuksia menetelmille, joilla on sama nimi. Menetelmän ohittaminen antaa ohjelmoijan tarjota vaihtoehtoisen toteutuksen alaluokassa menetelmälle, joka on jo määritelty sen superluokan sisällä. Menetelmän ylikuormitus antaa ohjelmoijan tarjota erilaisia toteutuksia useille menetelmille, joilla on sama nimi (samassa luokassa).

Mikä on ohittaminen?

Kuten edellä mainittiin, luokka voi laajentaa super- tai vanhempaluokkaa olio-ohjelmointikielillä. Lapsiluokalla voi olla omat menetelmänsä tai valinnaisesti omat toteutuksensa menetelmiin, jotka on jo määritelty vanhempien luokassa (tai yhdessä isovanhempien luokista). Joten kun jälkimmäinen tapahtuu, sitä kutsutaan menetelmän ohittamiseksi. Toisin sanoen, jos lapsiluokka tarjoaa toteutuksen menetelmälle, jolla on sama allekirjoitus ja palautustyyppi kuin jo vanhempien luokkiin määritelty menetelmä, sanotaan, että lapsiluokan toteutus ohittaa (korvaa). Joten jos luokassa on ohitettu menetelmä, ajonaikaisen järjestelmän on päätettävä, mitä menetelmän toteutusta käytetään. Tämä ongelma on ratkaistu tarkastelemalla tarkkaa objektityyppiä, jota käytetään sen kutsumiseen. Jos vanhemman luokan objektia käytetään ohitetun menetelmän kutsumiseen, käytetään vanhemman luokan toteutusta. Vastaavasti, jos se on lapsiluokan objekti, jota käytetään, käytetään lapsiluokan toteutusta. Nykyaikaiset ohjelmointikielet, kuten Java, Eifell, C ++ ja Python, sallivat menetelmän ohittamisen.

Mikä on ylikuormitus?

Menetelmän ylikuormitus on ominaisuus, jonka jotkin ohjelmointikielet tarjoavat useamman kuin yhden menetelmän luomiseen samalla nimellä, mutta erilaisilla syöttö- ja tulostustyypeillä. Tämä ominaisuus on käytettävissä nykyaikaisilla ohjelmointikielillä, kuten Java, C #, C ++ ja VB. NET. Voit ylikuormittaa menetelmän luomalla toisen menetelmän, jolla on sama nimi, mutta jolla on erilainen metodin allekirjoitus tai erilainen palautustyyppi (tai molemmat). Esimerkiksi, jos sinulla on method1 (type1 t1) ja method1 (type2 t2) saman luokan sisällä, ne ovat ylikuormitettuja. Sitten järjestelmän on päätettävä, mikä suoritetaan, kun sitä kutsutaan. Tämä erottelu tehdään tarkastelemalla menetelmälle siirrettyjen parametrien tyyppiä. Jos argumentti on tyyppiä 1, kutsutaan ensimmäinen toteutus, kun taas tyypin 2, toinen toteutus kutsutaan.

Mitä eroa on ohituksella ja ylikuormituksella?

Vaikka menetelmän ohittamista ja menetelmän ylikuormitusta käytetään tarjoamaan menetelmä, jolla on erilaisia toteutuksia, näiden kahden käsitteen / tekniikan välillä on keskeisiä eroja. Ensinnäkin menetelmän syrjäyttävät aineet pysyvät aina eri luokissa, kun taas menetelmän ylikuormituskohteet pysyvät samassa luokassa. Tämä tarkoittaa, että ohitus on mahdollista vain olio-ohjelmointikielissä, jotka sallivat perimisen, kun taas ylikuormitus voi olla saatavilla myös muulla kuin olio-kielellä. Toisin sanoen ohitat menetelmän superluokassa, mutta ylikuormitat menetelmän omassa luokassa.

Toinen ero on se, että ohitetuilla menetelmillä on sama metodin nimi, metodin allekirjoitus ja palautustyyppi, mutta ylikuormitettujen menetelmien on oltava erilaisia joko allekirjoituksessa tai palautustyypissä (nimen tulisi olla sama). Kahden ohitetun menetelmän erottamiseksi käytetään tarkkaa objektityyppiä, jota käytetään käytettyjen menetelmien id kutsumiseen, kun taas kahden ylikuormitetun menetelmän erottamiseen käytetään parametrien tyyppejä. Toinen keskeinen ero on, että ylikuormitus ratkaistaan käännösaikana, kun taas ohitus ratkaistaan ajon aikana.

Suositeltava: