Különbség a felülbírálás és a túlterhelés között

Anonim

Felülbírálás és túlterhelés

A módszer felülbírálása és a módszer túlterhelése két koncepció / technika / funkció található néhány programozási nyelven. Mindkét fogalom lehetővé teszi a programozó számára, hogy különböző megvalósításokat biztosítson az azonos nevű módszerekhez. A módszer-felülbírálás lehetővé teszi a programozó számára, hogy egy alternatív megvalósítást nyújtson egy alosztályon belül a szupersztáron belül már meghatározott módszerhez. Az eljárás túlterhelése lehetővé teszi a programozó számára, hogy többféle, ugyanazon a néven ismert azonosítóval (azonos osztályon) végrehajtott módszert biztosítson.

Mi a felülbírálás?

Amint fentebb említettük, egy osztály kiterjesztheti egy szuperosztályt vagy egy szülőkategóriát az objektumorientált programozási nyelveken. A gyermekosztálynak saját módszerei lehetnek, vagy opcionálisan saját implementációi lehetnek a szülő osztályban (vagy annak egy nagy szülőosztályánál) már definiált módszerekkel. Tehát ha ez utóbbi történik, az úgynevezett módszer felülbíráló. Más szavakkal, ha a gyermekosztály végrehajt egy olyan eljárást, amelynek ugyanaz az aláírása és visszatérési típusa van, mint az egyik szülőosztályában már definiált módszer, akkor ezt a módszert a gyermekosztály végrehajtásával felülírják (kicserélik). Tehát, ha van egy felülbírált módszer egy osztályban, akkor a futásidejű rendszernek el kell döntenie, hogy melyik módszert alkalmazzák. Ezt a problémát úgy oldja meg, hogy az objektum pontos típusát megvizsgálja. Ha a szülőosztály egyik objektumát használjuk a felülírt módszer meghívására, akkor a szülõi osztály végrehajtását használjuk. Hasonlóképpen, ha a gyermekosztály tárgya van, akkor a gyermekosztály végrehajtását használják. A modern programozási nyelvek, mint a Java, az Eifell, a C ++ és a Python lehetővé teszik a módszer túlfeszítését.

Mi a túlterhelés?

A módszer túlterhelése bizonyos programozási nyelvek által nyújtott szolgáltatás, ugyanazzal a névvel, de különböző bemeneti és kimeneti típusokkal. A modern programozási nyelvek, mint a Java, C #, C ++ és VB. NET, ez a funkció elérhető. A módszert túlterhelheti úgy, hogy létrehoz egy másik azonos nevű, de más módszerű aláírással vagy más visszatérési típussal (vagy mindkettővel) rendelkező módszert. Például ha a módszer1 (type1 t1) és a method1 (type2 t2) ugyanazon osztályon belül van, akkor túlterheltek. Ezután a rendszernek el kell döntenie, hogy melyiket kell végrehajtani, amikor hívják. Ez a differenciálódás a paraméter (ek) típusának a módszernél történő átnézésével történik. Ha az argumentum az 1. típusú, akkor az első végrehajtást hívják, míg ha a 2. típus, akkor a második megvalósítás neve.

Mi a különbség a felülbírálás és a túlterhelés között?

Habár a módszer túlsúlya és az eljárás túlterhelése különböző módszerek megvalósítására szolgál, kulcsfontosságú különbségek vannak e két fogalom / technika között. Először is, a metódusmódú alanyok mindig különböző osztályokon belül maradnak, míg a túlterhelés alanyai ugyanabban az osztályban maradnak. Ez azt jelenti, hogy a felülbírálás csak olyan objektumorientált programozási nyelveken lehetséges, amelyek lehetővé teszik az öröklést, míg a túlterhelés nem objektumorientált nyelven is elérhető. Más szóval, felülbírál egy módszert a szuperosztályban, de a saját osztályán belül túlterhelt egy módszert.

Egy másik különbség az, hogy a felülírt metódusok ugyanazt a módszert nevezik, a módszer aláírását és a visszatérési típust, de a túlterhelt módszereknek különbözniük kell az aláírásban vagy a visszatérési típusban (a névnek azonosnak kell lennie). A két felülbírált módszer különbségének megkülönböztetése érdekében az objektum pontos típusát használják fel, amelyet a használt módszerek meghívására használnak, míg a két túlterhelt módszer különbséget tesz a paraméterek típusai között. Egy másik kulcsfontosságú különbség az, hogy a túlterhelés a fordítási idő alatt oldódik meg, míg a felülbírálást a futásidő alatt oldják meg.