Kiemelt különbség – felülbírálás és túlterhelés a C nyelvben
A legfontosabb különbség a felülbírálás és a túlterhelés között a C nyelvben az, hogy a felülírt metódushívások definíciójához való hozzárendelése futási időben, míg a túlterhelt metódushívás definíciójához a fordítási időben történik.
A C egy általános célú programozási nyelv, amelyet a Microsoft fejlesztett ki. A C fő előnye, hogy támogatja az objektumorientált programozást (OOP). Az OOP egyik pillére a polimorfizmus. Többféle viselkedést ad egy tárgynak. A polimorfizmusnak két típusa van, amelyeket felülbírálásnak és túlterhelésnek neveznek. Ez a cikk a metódus felülbírálása és a túlterhelés közötti különbséget tárgyalja C-ban.
Mi a felülírás a C-ban?
Az OOP-ban van egy másik fontos fogalom, az öröklődés. A már létező osztály attribútumait és metódusait kell használni. Javítja a kód újrafelhasználhatóságát. A már meglévő osztály az alaposztály, az új osztály pedig származtatott osztály. A polimorfizmus felülbírálásához legyen egy alaposztály és egy származtatott osztály. A felülírt metódushívás hozzárendelése a definícióhoz futási időben történik. Egy példa a következő.
01. ábra: C program felülbírálással
A fenti program szerint a Shape osztály az alaposztály, és ez tartalmazza a megjelenítési metódust. A Téglalap és a Triangle osztály származtatott osztályok. Ezek a származtatott osztályok is ugyanazt a metódusmegjelenítést tartalmazzák saját implementációikkal.
Először az obj referenciaváltozó jön létre. A Shape objektumra mutat. Tehát a Shape osztály megjelenítési metódusa fog végrehajtani. Ezután a referenciaváltozó a Rectangle objektumra mutat. Tehát a Rectangle osztály megjelenítési metódusa fog végrehajtani. Végül a referenciaváltozó a Triangle objektumra mutat. Tehát a Triangle osztály megjelenítési metódusa fog végrehajtani. Az alaposztály megjelenítési metódusát felülírják a származtatott osztályok megjelenítési metódusai.
A futtatás módját futási időben határozzák meg. A Shape osztály „virtuális” kulcsszóval van írva. A Rectangle és Triangle osztályokat a ‘override’ kulcsszóval írjuk. Ha ezeket a kulcsszavakat nem használja, a kimenet kiírja a Shape osztály megjelenítési metódusának tartalmát mindenre.
Mi az a túlterhelés a C-ban?
Túlterhelés esetén több metódusnak ugyanaz a neve, de eltérő paraméterekkel. A paraméterek különböző típusúak lehetnek. A módszerek eltérő számú paraméterrel is rendelkezhetnek. A módszer túlterhelése ugyanabban az osztályban történik. A túlterhelt metódusok hozzárendelése a definícióhoz a fordítási időben történik. Lásd az alábbi C programot.
02. ábra: C program túlterheléssel
A fenti program szerint az A osztálynak két azonos nevű metódusa van, az úgynevezett összeg. Különféle paramétereik vannak. A főprogramban létrejön egy A objektum. Az összeg (2, 3) meghívja az összeg metódusát egész számokkal. Az összeg (5.1, 7.94) dupla értékekkel hívja meg az összeg módszert. Mindkét módszernek ugyanaz a neve és azonos számú paramétere van. De a paramétertípusok eltérőek. A szükséges módszert ennek megfelelően hívják meg. Túlterhelés akkor is előfordulhat, ha a metódusnevek és a paramétertípusok azonosak, de a paraméterek száma eltérő.
Mi a hasonlóság a felülírás és a túlterhelés között a C-ban?
Mind a felülírás, mind a túlterhelés a C-ban a polimorfizmus fajtái
Mi a különbség a felülírás és a túlterhelés között a C-ban?
Felülbírálás és túlterhelés a C nyelvben |
|
A felülbírálás a C-ban egy adott implementációt biztosít egy származtatott osztálymetódusban az alaposztályban már meglévő metódushoz. | A C túlterhelése több, azonos nevű metódus létrehozását jelenti, különböző megvalósításokkal. |
Paraméterek | |
A C felülbírálásban a metódusoknak ugyanaz a neve, ugyanaz a paramétertípus és a paraméterek száma. | A C túlterhelésben a metódusoknak ugyanaz a neve, de más paraméterek száma vagy más típusú paraméterek. |
Előfordulás | |
A C-ban a felülbírálás az alaposztályon és a származtatott osztályon belül történik. | A C nyelven a túlterhelés ugyanazon az osztályon belül történik. |
Kötési idő | |
A felülírt metódushívás hozzárendelése a definíciójához futásidőben történik. | A túlterhelt metódushívás hozzárendelése a definíciójához a fordítási időben történik. |
Synonyms | |
A felülbírálást futásidejű polimorfizmusnak, dinamikus polimorfizmusnak vagy késői kötésnek nevezik. | A túlterhelést fordítási idő polimorfizmusnak, statikus polimorfizmusnak vagy korai kötésnek nevezik. |
Összefoglaló – Felülbírálás és túlterhelés a C nyelvben
A felülírás és a túlterhelés a polimorfizmus két típusa. A különbség a felülbírálás és a túlterhelés között a C-ban az, hogy a felülírt metódushívás definíciójához rendelése futási időben történik, míg a túlterhelt metódushívás definíciójához a fordítási időben.