Avainero – ohittaminen vs ylikuormitus C
Avainero ohituksen ja ylikuormituksen välillä C:ssa on, että ohitetun menetelmäkutsun sitominen määritelmäänsä tapahtuu ajon aikana, kun taas ylikuormitetun menetelmäkutsun sitominen määritelmäänsä tapahtuu käännösaikana.
C on Microsoftin kehittämä yleiskäyttöinen ohjelmointikieli. C:n tärkein etu on, että se tukee Object Oriented Programming (OOP) -ohjelmointia. Yksi OOP:n pilari on polymorfismi. Se antaa esineelle useita käyttäytymismalleja. Polymorfismissa on kahta tyyppiä, jotka tunnetaan ohittavina ja ylikuormituksina. Tässä artikkelissa käsitellään eroa menetelmän ohituksen ja ylikuormituksen välillä C:ssa.
Mikä on ohitus C:ssa?
OOP:ssa on toinen tärkeä käsite on perinnöllisyys. Siinä käytetään jo olemassa olevan luokan attribuutteja ja menetelmiä. Se parantaa koodin uudelleenkäytettävyyttä. Jo olemassa oleva luokka on perusluokka, ja uusi luokka tunnetaan johdettuna luokkana. Polymorfismin ohittamisessa tulee olla perusluokka ja johdettu luokka. Ohitettujen metodikutsujen sitominen määritelmään tapahtuu suorituksen aikana. Esimerkki on seuraava.
Kuva 01: C-ohjelma ohituksella
Yllä olevan ohjelman mukaan luokka Shape on perusluokka, ja se sisältää näyttötavan. Luokka suorakulmio ja kolmio ovat johdettuja luokkia. Näillä johdetuilla luokilla on myös sama metodinäyttö omilla toteutuksillaan.
Ensin luodaan viitemuuttuja obj. Se osoittaa Shape-objektiin. Joten Shape-luokan näyttömenetelmä suoritetaan. Sitten viitemuuttuja osoittaa suorakulmio-objektiin. Joten, suorakulmioluokan näyttömenetelmä suoritetaan. Lopuksi viitemuuttuja osoittaa kolmio-olioon. Joten Triangle-luokan näyttömenetelmä suoritetaan. Perusluokan näyttömenetelmä ohitetaan johdettujen luokkien näyttömenetelmillä.
Ajotapa päätetään suorituksen aikana. Shape-luokka kirjoitetaan "virtuaalisella" avainsanalla. Suorakulmio- ja Triangle-luokat kirjoitetaan "ohita"-avainsanalla. Jos näitä avainsanoja ei käytetä, tulos tulostaa Shape-luokan näyttötavan sisällön kaikille.
Mitä on ylikuormitus C:ssa?
Ylikuormituksessa useilla menetelmillä on sama nimi, mutta eri parametreilla. Parametrit voivat olla erityyppisiä. Menetelmillä voi myös olla eri määrä parametreja. Menetelmän ylikuormitusta esiintyy samassa luokassa. Ylikuormitettujen menetelmien sitoutuminen määritelmään tapahtuu käännösvaiheessa. Katso alla olevaa C-ohjelmaa.
Kuva 02: C-ohjelma ylikuormituksella
Yllä olevan ohjelman mukaan luokassa A on kaksi menetelmää, joilla on sama nimi nimeltä summa. Niillä on erilaisia parametreja. Pääohjelmassa luodaan A:n objekti. Summa (2, 3) käyttää summamenetelmää kokonaislukujen kanssa. Summa (5.1, 7.94) käyttää summamenetelmää kaksinkertaisilla arvoilla. Molemmilla menetelmillä on sama nimi ja sama määrä parametreja. Mutta parametrityypit ovat erilaisia. Tarvittava menetelmä kutsutaan vastaavasti. Ylikuormitusta voi tapahtua myös, jos menetelmän nimet ja parametrityypit ovat samat, mutta parametrien määrä on erilainen.
Mikä on samank altaisuus ohituksen ja ylikuormituksen välillä C:ssa?
Sekä ohitus että ylikuormitus C:ssa ovat polymorfismin tyyppejä
Mitä eroa on ohituksen ja ylikuormituksen välillä C:ssa?
Overriding vs Overloading C |
|
Ohittaminen C:ssa on tietyn toteutuksen tarjoaminen johdettuun luokkametodiin perusluokassa jo olemassa olevalle menetelmälle. | Ylikuormitus C:ssa tarkoittaa useiden samannimien menetelmien luomista erilaisilla toteutuksilla. |
Parametrit | |
C Overridingissa menetelmillä on sama nimi, samat parametrityypit ja sama määrä parametreja. | C Overloadingissa menetelmillä on sama nimi, mutta eri määrä parametreja tai erityyppisiä parametreja. |
Tapahtuma | |
C:ssa ohitus tapahtuu perusluokassa ja johdetussa luokassa. | C:ssa ylikuormitusta esiintyy samassa luokassa. |
Sitoutumisaika | |
Ohitetun menetelmäkutsun sitominen määritelmäänsä tapahtuu suorituksen aikana. | Ylikuormitetun menetelmäkutsun sitominen määritelmäänsä tapahtuu käännösaikana. |
Synonyymit | |
Ohittamista kutsutaan ajonaikaiseksi polymorfismiksi, dynaamiseksi polymorfismiksi tai myöhäiseksi sidokseksi. | Ylikuormitusta kutsutaan käännösaikapolymorfismiksi, staattiseksi polymorfismiksi tai varhaiseksi sitomiseksi. |
Yhteenveto – Ohitus vs ylikuormitus C
Overriding ja Overloading ovat kahdenlaisia polymorfismia. Ero ohituksen ja ylikuormituksen välillä C:ssa on se, että ohitetun menetelmäkutsun sitominen määritykseensä tapahtuu ajon aikana, kun taas ylikuormitetun menetelmäkutsun sitoutuminen määritelmäänsä tapahtuu käännösaikana.