Ero menetelmän ylikuormituksen ja ohittamisen välillä

Menetelmä ylikuormitus

Menetelmän ylikuormitus, joka tunnetaan myös nimellä Funktion ylikuormitus tai Compile time polymorphism, on käsite, että kahdella tai useammalla menetelmällä on sama nimi, mutta erilainen allekirjoitus samassa laajuudessa. On monia ohjelmointikieliä, jotka tukevat tätä ominaisuutta: Ada, C ++, C #, D ja Java.

Esimerkki menetelmän ylikuormituksesta C #: ssä
Kuten yllä olevassa esimerkissä esitetään, menetelmä 'monikulmio' ylikuormittuu 3 kertaa erilaisella menetelmän allekirjoituksella, ts. Tyyppi tai parametrien lukumäärä ovat erilaisia.

Menetelmän ohittaminen

Menetelmän ohittaminen, joka tunnetaan myös nimellä Function overriring tai Run time polymorphism, on OOP-ominaisuus, jonka avulla lasten luokka voi tarjota oman toteutuksensa vanhemmaluokassa määritellylle menetelmälle. Lasten luokan toteutus ohittaa menetelmän määritelmän perusluokassa edellyttäen, että lasten luokan menetelmällä tulisi olla sama nimi, allekirjoitus ja palautustyyppi.

Esimerkki menetelmän ohittamisesta C #: ssä
Tässä Source2-luokan piirtomenetelmä ohittaa Source1-luokassa määritetyn vetomenetelmän.

Ero menetelmän ylikuormituksen ja menetelmän ohittamisen välillä

  1. Kohdassa Menetelmä ylikuormitusmenetelmillä on oltava erilainen allekirjoitus. Menetelmässä ohitusmenetelmillä on oltava sama allekirjoitus.
  2. Toiminnon ylikuormitus on "lisätä" tai "laajentaa" enemmän menetelmän käyttäytymiseen. Toiminnon ohittaminen on menetelmän käyttäytymisen muuttaminen kokonaan tai "uudelleen".
  3. Menetelmän ylikuormitusta käytetään saavuttamaan Compile Time -polymorfismi; menetelmän ohittamista käytetään ajonaikaisen polymorfismin saavuttamiseen.
  4. Menetelmässä / toiminnassa ylikuormitus kääntäjä tietää, mikä kohde luokalle on määritetty kokoamishetkellä, mutta menetelmässä tämän tiedon ohittaminen ei ole tiedossa ennen suoritusta.
  5. Toiminnon ylikuormitus tapahtuu samassa luokassa, kun taas ylikuormitus tapahtuu perusluokasta johdetussa luokassa.
SE