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

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

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

Videó: Különbség a felülírás és a túlterhelés között
Videó: KamarAAkadémia Light – Bevezetés a közgazdaságtanba - Mikroökonómia 2024, Július
Anonim

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

A módszer A felülbírálás és a módszer A túlterhelés két fogalom/technika/szolgáltatás, amely egyes programozási nyelvekben megtalálható. Mindkét koncepció lehetővé teszi a programozó számára, hogy különböző implementációkat biztosítson az azonos nevű metódusokhoz. A metódus felülbírálása lehetővé teszi a programozó számára, hogy egy alosztályon belül alternatív megvalósítást biztosítson a szuperosztályon belül már definiált metódushoz képest. A metódusok túlterhelése lehetővé teszi a programozó számára, hogy különböző implementációkat biztosítson több, azonos nevű metódushoz (ugyanazon az osztályon belül).

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

Amint fentebb említettük, egy osztály kiterjesztheti a szuperosztályt vagy a szülőosztályt objektumorientált programozási nyelveken. Egy utódosztálynak lehetnek saját metódusai, vagy opcionálisan saját implementációi is lehetnek a szülőosztályában (vagy valamelyik nagy szülőosztályában) már meghatározott metódusokhoz. Tehát amikor ez utóbbi megtörténik, azt módszer felülbírálásnak nevezik. Más szóval, ha a gyermekosztály implementációt biztosít egy metódushoz ugyanazzal az aláírással és visszatérési típussal, mint az egyik szülőosztályában már definiált metódus, akkor azt a metódust felülírja (lecseréli) a gyermekosztály megvalósítása.. Tehát, ha van egy felülírt metódus egy osztályban, a futásidejű rendszernek el kell döntenie, hogy melyik metódus megvalósítását használja. Ezt a problémát úgy oldja meg, hogy megvizsgálja a meghíváshoz használt objektum pontos típusát. Ha a felülírt metódus meghívására a szülőosztály egy objektumát használják, akkor a szülőosztályban lévő implementációt használják. Hasonlóképpen, ha az utódosztály egy objektumáról van szó, akkor az utódosztály megvalósítását használják. A modern programozási nyelvek, mint például a Java, az Eifell, a C++ és a Python lehetővé teszik a metódusok felülbírálását.

Mi az a túlterhelés?

A metódusok túlterhelése néhány programozási nyelv által biztosított szolgáltatás, amellyel több metódus hozható létre azonos néven, de eltérő bemeneti és kimeneti típusokkal. A modern programozási nyelveken, mint például a Java, C, C++ és VB. NET, ez a funkció elérhető. Túlterhelhet egy metódust, ha létrehoz egy másik metódust azonos névvel, de eltérő metódusaláírással vagy eltérő visszatérési típussal (vagy mindkettővel). Például, ha ugyanazon az osztályon belül van a method1(type1 t1) és a method1(type2 t2), akkor ezek túlterheltek. Ezután a rendszernek el kell döntenie, hogy melyiket hajtsa végre a meghívásakor. Ez a megkülönböztetés a metódusba átadott paraméter(ek) típusának figyelembevételével történik. Ha az argumentum 1-es típusú, akkor az első implementációt hívjuk meg, míg ha 2-es típusú, akkor a második implementációt hívjuk meg.

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

Bár a metódusok felülbírálása és túlterhelése különböző megvalósítású metódusok biztosítására szolgál, e két fogalom/technika között lényeges különbségek vannak. Először is, a metódus felülbírálásának alanyai mindig más-más osztályon belül maradnak, míg a túlterhelés tárgyai ugyanazon az osztályon belül maradnak. Ez azt jelenti, hogy a felülbírálás csak az öröklődést lehetővé tevő objektum-orientált programozási nyelvekben lehetséges, míg a túlterhelés nem objektum-orientált nyelven is elérhető. Más szavakkal, felülírsz egy metódust a szuperosztályban, de túlterhelsz egy metódust a saját osztályodban.

További különbség, hogy a felülírt metódusoknak ugyanaz a metódusnév, a metódus aláírása és a visszatérési típusa, de a túlterhelt metódusoknak el kell térniük az aláírásban vagy a visszatérési típusban (a névnek azonosnak kell lennie). A két felülírt metódus megkülönböztetése érdekében a használt metódusazonosítók meghívásához használt objektum pontos típusát, míg a két túlterhelt metódus megkülönböztetéséhez a paraméterek típusait használjuk. Egy másik lényeges különbség az, hogy a túlterhelést a fordítás, míg a felülbírálást futási időben oldják meg.

Ajánlott: