Absztrakt osztály vs öröklődés
Az absztrakt osztály és az öröklődés két fontos objektumorientált fogalom, amely számos objektumorientált programozási nyelvben, például a Java-ban megtalálható. Az absztrakt osztály egy reguláris (konkrét) osztály absztrakt változatának tekinthető, míg az Inheritance lehetővé teszi az új osztályok számára, hogy más osztályokat bővítsenek. Az absztrakt osztály olyan osztály, amely nem inicializálható, de bővíthető. Tehát az absztrakt osztályoknak csak akkor van értelme, ha a programozási nyelv támogatja az öröklődést. A Java-ban az Abstract osztályokat az Abstract kulcsszóval deklarálják, míg az Extends kulcsszót a (szuper) osztályból való örökléshez használják.
Mi az absztrakt osztály?
Az absztrakt osztályok, más néven Abstract Base Classes (ABC) általában nem példányosíthatók (az osztály 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ődést (alosztályok létrehozásának képességét egy osztály kiterjesztésével). Az absztrakt osztályok általában egy absztrakt fogalmat vagy entitást képviselnek, részben vagy egyáltalán nem implementálva. Ezért az absztrakt osztályok szülőosztályokként működnek, amelyekből a leszármazott osztályok származnak, így az utódosztály megosztja a szülőosztály hiányos jellemzőit, és funkcionalitást lehet hozzáadni a teljesítésükhöz.
Az absztrakt osztályok tartalmazhatnak absztrakt metódusokat. Az absztrakt osztályt kiterjesztő alosztályok megvalósíthatják ezeket az (öröklött) absztrakt metódusokat. Ha a gyermekosztály az összes ilyen absztrakt metódust megvalósítja, akkor ez egy konkrét osztály. De ha nem, akkor a gyermekosztály is absztrakt osztály lesz. Mindez azt jelenti, hogy amikor a programozó kijelöl egy osztályt absztraktnak, azt mondja, hogy az osztály hiányos lesz, és olyan elemei lesznek, amelyeket az örökös alosztályoknak ki kell egészíteniük. Ez egy jó módja annak, hogy szerződést kössön két programozó között, ami leegyszerűsíti a szoftverfejlesztési feladatokat. A programozónak, aki kódot ír az öröklésre, pontosan követnie kell a metódusdefiníciókat (de természetesen lehet saját implementációja).
Mi az öröklés?
Az öröklődés egy objektumorientált koncepció, amely lehetővé teszi az új osztályok számára, hogy más osztályokat bővítsenek. Az Extends kulcsszó az öröklődés koncepciójának megvalósítására szolgál a Java programozási nyelvben. Az öröklődés lényegében a kód újrafelhasználását biztosítja azáltal, hogy lehetővé teszi egy meglévő osztály tulajdonságainak és viselkedésének kiterjesztését egy újonnan definiált osztállyal. Amikor egy új alosztály (vagy származtatott osztály) kiterjeszt egy szuperosztályt (vagy szülőosztályt), ez az alosztály örökli a szuperosztály összes attribútumát és metódusát. Az alosztály opcionálisan felülírhatja a szülőosztálytól örökölt viselkedést (új vagy bővített funkcionalitást biztosít a metódusoknak). Általában egy alosztály nem tud több szuperosztályt kiterjeszteni (például Java-ban). Ezért nem használhat kiterjesztéseket többszörös öröklődéshez. A többszörös öröklődéshez interfészeket kell használnia.
Mi a különbség az absztrakt osztály és az öröklődés között?
Az absztrakt osztályok általában egy absztrakt fogalmat vagy egy entitást képviselnek, amelynek megvalósítása részleges vagy nem. Az öröklődés lehetővé teszi az új osztályok számára, hogy más osztályokat bővítsenek. Mivel az absztrakt osztályokat nem lehet példányosítani, az absztrakt osztályok használatához az öröklődés fogalmát kell használni. Ellenkező esetben az absztrakt osztálynak nincs haszna. Az absztrakt osztályok tartalmazhatnak absztrakt metódusokat, és az osztály kiterjesztésekor minden metódus (absztrakt és konkrét) öröklődik. Az örökölt osztály bármely vagy az összes metódust megvalósíthatja. Ha az összes Absztrakt metódus nincs implementálva, 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 absztrakt osztályok minősége, hanem inkább az öröklődés korlátozása).
Kapcsolódó bejegyzések:
Különbség az absztrakt osztály és a konkrét osztály között
Különbség a virtuális és az absztrakt között
Különbség az absztrakt osztály és az interfész között
Különbség a megvalósítások és a kiterjesztések között
Különbség a grafikon és a fa között
Filed Under: Programozás Tagged with: ABC, abstract, Abstract Base Classes, Absztrakt osztály, Absztrakt osztályok, Absztrakt kulcsszó, Absztrakt metódusok, konkrét osztály, Extends kulcsszó, Inheritance, Inheritance class, öröklött osztály, Java, többszörös öröklődés, objektum orientált fogalmak, normál osztály, szuper osztály
A szerzőről: Indika
Indika, BSc. Eng, MSECE Számítástechnika, PhD. Számítástechnika, adjunktus, és kutatási területei vannak a bioinformatika, a számítási biológia és az orvosbiológiai természetes nyelvi feldolgozás területén.
Megjegyzések
-
Jason azt mondja:
2017. augusztus 30., 13:25
Köszönjük, hogy elmagyarázta a különbséget. Ezzel minden kérdésem megoldódott.
Válasz
-
Aus azt mondja:
2019. május 10., 15:04
a legjobb válasz az interneten, a tanár nem magyarázza a szart, és nincs értelme, monoton mf. Így magyarázod a fogalmakat.
Válasz
Válaszhagyás Válasz visszavonása
E-mail címét nem tesszük közzé. A kötelező mezőkjelzéssel vannak ellátva
Megjegyzés
Név
Webhely
Kiemelt bejegyzések
Különbség a koronavírus és a megfázás tünetei között
Különbség a koronavírus és a SARS között
Különbség a koronavírus és az influenza között
Különbség a koronavírus és a Covid 19 között
Tetszhetsz
Különbség a szibériai husky és a malamut között
Különbség a Calculus AB és a BC között
Különbség a kettős szak és a kettős diploma között
Különbség a világos ingekhez és a sötét ingekhez készült transzferpapír között
között