Peamine erinevus – alistamine vs ülekoormamine C
Põhiline erinevus alistamise ja ülekoormamise vahel C-s on see, et alistatud meetodikutse sidumine selle definitsiooniga toimub käitusajal, samas kui ülekoormatud meetodikutse sidumine selle definitsiooniga toimub kompileerimise ajal.
C on Microsofti välja töötatud üldotstarbeline programmeerimiskeel. C peamine eelis on see, et see toetab objektorienteeritud programmeerimist (OOP). Üks OOP-i sammas on polümorfism. See annab objektile mitmesuguse käitumise. Polümorfismil on kahte tüüpi, mida tuntakse üle- ja ülekoormustena. Selles artiklis käsitletakse erinevust meetodi alistamise ja ülekoormuse vahel C-s.
Mis on C-s alistamine?
OOP-is on veel üks oluline mõiste – pärimine. See on juba olemasoleva klassi atribuutide ja meetodite kasutamine. See parandab koodi korduvkasutatavust. Juba olemasolev klass on põhiklass ja uut klassi nimetatakse tuletatud klassiks. Polümorfismi tühistamisel peaks olema põhiklass ja tuletatud klass. Alistatava meetodi kutse sidumine definitsiooniga toimub käitusajal. Näide on järgmine.
Joonis 01: C programm alistamisega
Vastav alt ül altoodud programmile on klass Shape põhiklass ja see sisaldab kuvamismeetodit. Klass Ristkülik ja Kolmnurk on tuletatud klassid. Nendel tuletatud klassidel on ka sama meetodi kuva koos oma rakendustega.
Esm alt luuakse viitemuutuja obj. See osutab Shape objektile. Seega käivitub Shape klassi kuvamismeetod. Seejärel osutab võrdlusmuutuja objektile Ristkülik. Seega käivitatakse klassi Rectangle kuvamismeetod. Lõpuks osutab võrdlusmuutuja kolmnurga objektile. Niisiis, käivitatakse klassi Triangle kuvamismeetod. Põhiklassi kuvamismeetodi alistavad tuletatud klasside kuvamismeetodid.
Käitamismeetod otsustatakse käitusajal. Shape klass on kirjutatud märksõnaga "virtuaalne". Klassid Ristkülik ja Kolmnurk on kirjutatud märksõnaga "alista". Kui neid märksõnu ei kasutata, prindib väljund Shape klassi kuvameetodi sisu kõigile.
Mis on C ülekoormamine?
Ülekoormuse korral on mitmel meetodil sama nimi, kuid erinevate parameetritega. Parameetrid võivad olla erinevat tüüpi. Meetoditel võib olla ka erinev arv parameetreid. Meetodi ülekoormus toimub samas klassis. Ülekoormatud meetodite sidumine definitsiooniga toimub kompileerimise ajal. Vaadake allolevat C programmi.
Joonis 02: C programm koos ülekoormusega
Vastav alt ül altoodud programmile on klassil A kaks sama nimega meetodit, mida nimetatakse summaks. Neil on erinevat tüüpi parameetreid. Põhiprogrammis luuakse A objekt. Summa (2, 3) käivitab täisarvudega summameetodi. Summa (5.1, 7.94) käivitab kahekordsete väärtustega summameetodi. Mõlemal meetodil on sama nimi ja sama arv parameetreid. Kuid parameetrite tüübid on erinevad. Vajalik meetod kutsutakse vastav alt. Ülekoormus võib toimuda ka siis, kui meetodite nimed ja parameetrite tüübid on samad, kuid parameetrite arv on erinev.
Milline on alistamise ja ülekoormamise sarnasus C-s?
Nii alistamine kui ka ülekoormus C-s on polümorfismi tüübid
Mis vahe on alistamise ja ülekoormamise vahel C-s?
Alistamine vs ülekoormamine C |
|
C-s alistamine on tuletatud klassimeetodis spetsiifilise teostuse pakkumine baasklassis juba olemasolevale meetodile. | C ülekoormamine tähendab mitme sama nimega meetodi loomist erinevate rakendustega. |
Parameetrid | |
C alistamise korral on meetoditel sama nimi, samad parameetritüübid ja sama arv parameetreid. | C ülekoormuse puhul on meetoditel sama nimi, kuid erinev arv parameetreid või erinevat tüüpi parameetreid. |
Esinemine | |
C-s toimub alistamine põhiklassis ja tuletatud klassis. | C-s toimub ülekoormus samas klassis. |
Köitmisaeg | |
Alistatud meetodi kutse sidumine selle definitsiooniga toimub käitusajal. | Ülekoormatud meetodi kutse sidumine selle definitsiooniga toimub kompileerimise ajal. |
Sünonüümid | |
Alistamist nimetatakse käitusaegseks polümorfismiks, dünaamiliseks polümorfismiks või hiliseks sidumiseks. | Ülekoormust nimetatakse kompileerimisaja polümorfismiks, staatiliseks polümorfismiks või varaseks sidumiseks. |
Kokkuvõte – alistamine vs ülekoormamine C
Ületamine ja ülekoormamine on kahte tüüpi polümorfismi. Erinevus C-i alistamise ja ülekoormamise vahel seisneb selles, et alistatud meetodikutse sidumine selle definitsiooniga toimub käitusajal, samas kui ülekoormatud meetodikutse sidumine selle definitsiooniga toimub kompileerimise ajal.