Absztrakt osztály vs öröklés
Az absztrakt osztály és az öröklődés két objektumorientált fogalom, amely számos objektumorientált programozási nyelvben megtalálható, például a Java-ban. Az absztrakt osztály a rendes (konkrét) osztály absztrakt változatának tekinthető, míg az Öröklés lehetővé teszi az új osztályok számára, hogy más osztályokat kibővítsenek. Az absztrakt osztály olyan osztály, amely nem inicializálható, de kibővíthető. Tehát az absztrakt osztályoknak csak akkor van értelme, ha a programozási nyelv támogatja az öröklést. A Java-ban az absztrakt osztályokat absztrakt kulcsszóval deklarálják, míg az Extends kulcsszót egy (szuper) osztály örökléséhez használják.
Mi az absztrakt osztály?
Általában az absztrakt osztályokat, más néven Absztrakt alaposztályokat (ABC) nem lehet példányosítani (az osztály egy példánya nem hozható létre). Tehát az absztrakt osztályoknak csak akkor van értelme, ha a programozási nyelv támogatja az öröklést (az osztály kiterjesztéséből az alosztályok létrehozásának képessége). Az absztrakt osztályok általában elvont fogalmat vagy entitást képviselnek, részleges vagy semmilyen megvalósítással. Ezért az absztrakt osztályok szülőosztályként működnek, amelyekből gyermekosztályok származnak, így a gyermekosztály megosztja a szülőosztály hiányos jellemzőit, és a funkcionalitás hozzáadható azok teljesítéséhez.
Az absztrakt osztályok tartalmazhatnak absztrakt módszereket. Az absztrakt osztályt kiterjesztő alosztályok megvalósíthatják ezeket az (öröklött) absztrakt módszereket. Ha a gyermekosztály az összes ilyen elvont módszert alkalmazza, akkor az konkrét osztály. De ha nem így történik, akkor a gyermekosztály is elvont osztály lesz. Mindez azt jelenti, hogy amikor a programozó egy osztályt absztraktként jelöl, azt mondja, hogy az osztály hiányos lesz, és olyan elemekkel rendelkezik, amelyeket az öröklődő alosztályoknak kell kitölteniük. Ez egy jó módszer két programozó közötti szerződés létrejöttéhez, amely leegyszerűsíti a szoftverfejlesztés feladatait. A programozónak, aki öröklési kódot ír, pontosan követnie kell a módszer definícióit (de természetesen saját megvalósítása is lehet).
Mi az öröklés?
Az öröklés egy objektumorientált koncepció, amely lehetővé teszi az új osztályok számára, hogy más osztályokat kibővítsenek. Az Extends kulcsszó az öröklés fogalmának megvalósítására szolgál a Java programozási nyelvben. Az öröklés lényegében biztosítja a kód újrafelhasználását azáltal, hogy lehetővé teszi egy meglévő osztály tulajdonságainak és viselkedésének kibővítését egy újonnan definiált osztály által. Amikor egy új alosztály (vagy származtatott osztály) kiterjeszti a szuper osztályt (vagy szülőosztályt), akkor az alosztály örökli a szuper osztály összes attribútumát és módszerét. Az alosztály opcionálisan felülírhatja a szülőosztálytól örökölt viselkedést (új vagy kibővített funkcionalitást biztosít a módszereknek). Az alosztály általában nem képes több szuper osztály kiterjesztésére (pl. Java-ban). Ezért nem használhatja a kiterjesztéseket többszörös örökléshez. Többszörös örökléshez interfészeket kell használnia.
Mi a különbség az absztrakt osztály és az öröklés között?
Az absztrakt osztályok általában elvont fogalmat vagy entitást képviselnek, részleges vagy semmilyen megvalósítással. Az öröklés lehetővé teszi, hogy az új osztályok kiterjesszék a többi osztályt. Mivel az absztrakt osztályokat nem lehet példányosítani, az absztrakt osztályok használatához az öröklés fogalmát kell használnia. Egyébként az Absztrakt osztálynak nincs haszna. Az absztrakt osztályok tartalmazhatnak absztrakt módszereket, és az osztály kibővítésekor az összes (absztrakt és konkrét) módszer öröklődik. Az örökölt osztály bármelyik vagy az összes módszert megvalósíthatja. Ha az összes absztrakt módszert nem hajtják végre, akkor ez az osztály is absztrakt osztály lesz. Egy osztály nem örökölhet egynél több absztrakt osztályból (ez önmagában nem az elvont osztályok minősége, hanem inkább az öröklés korlátozása).