Felülíró és túlterhelő
A felülíró módszer és a módszer túlterhelése két fogalom / technika / szolgáltatás, amelyek néhány programozási nyelven megtalálhatók. Mindkét koncepció lehetővé teszi a programozó számára, hogy eltérő implementációkat biztosítson az azonos nevű módszerekhez. A módszer felülbírálása lehetővé teszi a programozó számára, hogy alternatív megvalósítást biztosítson egy alosztályon belül a szuper osztályán belül már meghatározott módszerhez. A módszer túlterhelése lehetővé teszi a programozó számára, hogy különböző megvalósításokat biztosítson több módszerhez, azonos névvel (ugyanazon osztályon belül).
Mi az elsődleges?
Mint fentebb említettük, egy osztály kiterjeszthet egy szuper osztályt vagy egy szülő osztályt, objektumorientált programozási nyelveken. A gyermekosztálynak megvannak a saját módszerei, vagy opcionálisan saját megvalósításai is lehetnek a szülői osztályában (vagy egyik nagyszülői osztályában) már meghatározott módszerekhez. Tehát, ha ez utóbbi megtörténik, akkor azt felülíró módszernek nevezzük. Más szavakkal, ha a gyermekosztály végrehajtást biztosít egy olyan módszerhez, amelynek azonos aláírása és visszatérési típusa van, mint az egyik szülőosztályában már meghatározott módszernek, akkor azt állítják, hogy ezt a módszert felülbírálják (felváltják) a gyermekosztály megvalósításával. . Tehát, ha van egy felülbírált módszer az osztályban, akkor a futásidejű rendszernek kell eldöntenie, hogy melyik módszer megvalósítását használja. Ezt a problémát úgy lehet megoldani, hogy megvizsgálja az objektum pontos típusát, amellyel meghívják. Ha a szülőosztály valamelyik objektumát használják a felülbírált módszer meghívására, akkor a szülőosztályban alkalmazott megvalósítást kell használni. Hasonlóképpen, ha ez a gyermek osztály tárgya, akkor a gyermek osztály megvalósítását kell használni. A modern programozási nyelvek, például a Java, az Eifell, a C ++ és a Python lehetővé teszik a módszer felülbírálását.
Mi a túlterhelés??
A módszer túlterhelése olyan szolgáltatás, amelyet egyes programozási nyelvek biztosítanak, hogy egynél több módszert hozzanak létre azonos névvel, de eltérő bemeneti és kimeneti típusokkal. A modern programozási nyelvekben, mint például a Java, C #, C ++ és a VB.NET, ez a szolgáltatás elérhető. Túlterhelhet egy módszert egy másik módszer létrehozásával, azonos névvel, de eltérő metódus aláírással vagy eltérő visszatérési típussal (vagy mindkettővel). Például, ha az 1. módszer (1. típusú t1) és az 1. módszer (2. típusú t2) ugyanabban az osztályban található, akkor ezek túl vannak terhelve. Ezután a rendszernek el kell döntenie, hogy melyiket hajtja végre. Ezt a megkülönböztetést úgy végezzük, hogy megvizsgáljuk a módszerhez átvitt paraméter (ek) típusát. Ha az argumentum 1. típusú, akkor az első megvalósítást hívjuk, míg ha a 2. típusú, akkor a második megvalósítást hívjuk..
Mi a különbség a felülírás és a túlterhelés között??
Bár a módszer felülbírálása és a módszer túlterhelése eltérő megvalósítású módszer biztosítására szolgál, a két fogalom / technika között kulcsfontosságú különbségek vannak. Először is, a módszertant felülíró tantárgyak mindig különböző osztályokon belül helyezkednek el, míg a túlterhelő módszerrel rendelkezők ugyanazon osztályon belül maradnak. Ez azt jelenti, hogy a felülbírálás csak az öröklést lehetővé tevő objektumorientált programozási nyelveknél lehetséges, míg a túlterhelés nem objektumorientált nyelven is elérhető. Más szavakkal, felülírja a módszert a szuper osztályban, de túlterhel egy módszert a saját osztályán belül.
Egy másik különbség az, hogy a felülbírált módszereknek azonos a metódus neve, a metódus aláírása és a visszatérés típusa, de a túlterhelt módszereknek külön kell lenniük az aláírás vagy a visszatérés típusától (a névnek azonosnak kell lennie). A két felülbírált módszer megkülönböztetése érdekében az objektum pontos típusa, amelyet az alkalmazott módszerek meghívására használnak, míg a két túlterhelt módszer megkülönböztetésére a paraméterek típusait használjuk. Egy másik lényeges különbség az, hogy a túlterhelés fordításkor oldódik meg, míg a felülbírálás futási időben oldódik meg.