Absztrakt osztály vs felület
Az absztrakt osztály és az interfész két objektum-orientált konstrukció található sok objektum-orientált programozási nyelven, például a Java-ban. Az absztrakt osztály a rendes (konkrét) osztály elvont változatának tekinthető, míg az interfész a szerződés megvalósításának eszközeként tekinthető. Az absztrakt osztály olyan osztály, amelyet nem lehet inicializálni, de meg lehet hosszabbítani. Az interfész olyan típus, amelyet más osztályoknak be kell építeniük. A Java-ban az absztrakt osztályokat az absztrakt kulcsszó használatával deklarálják, míg az interfész kulcsszavai az interfész meghatározására szolgálnak.
Mi az absztrakt osztály??
Általában az absztrakt osztályok, más néven absztrakt alaposztályok (ABC) is nem realizálható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ést (képesség alosztályok létrehozására az osztály kiterjesztéséből). Az absztrakt osztályok általában egy elvont fogalmat vagy entitást képviselnek, részleges vagy nem megvalósított formában. Ezért az absztrakt osztályok szülőosztályként működnek, ahonnan a gyermek osztályok származnak, így a gyermek osztály megosztja a szülő osztály hiányos tulajdonságait, és kiegészíthető a funkciók kiegészítésükhöz..
Az absztrakt osztályok tartalmazhatnak absztrakt módszereket. Az elvont osztályt kiterjesztő alosztályok megvalósíthatják ezeket (örökölt) absztrakt módszereket. Ha a gyermekosztály végrehajtja az összes ilyen absztrakt módszert, akkor ez egy konkrét osztály. De ha nem, akkor a gyermekosztály absztrakt osztálytá válik. Mindez azt jelenti, hogy amikor a programozó osztályt jelöl absztraktnak, azt mondja, hogy az osztály hiányos lesz, és olyan elemekkel fog rendelkezni, amelyeket az öröklő alosztályoknak ki kell tölteniük. Ez egy jó módszer a két programozó közötti szerződés megkötésére, amely egyszerűsíti a szoftverfejlesztés feladatait. A programozónak, aki az örökítéshez kódot ír, pontosan követnie kell a módszer meghatározásait (de természetesen megvan a maga megvalósítása).
Mi az a felület??
Az interfész egy elvont típus, amelyet egy szerződés meghatározására használnak, amelyet az interfészt megvalósító osztályoknak kell végrehajtaniuk. Az interfész kulcsszó segítségével meghatározható egy interfész, az Implements kulcsszó pedig egy interfész osztályba történő bevezetéséhez (Java programozási nyelven). Általában egy interfész csak metódusaláírásokat és állandó deklarációkat tartalmaz. Minden olyan interfésznek, amely egy adott felületet megvalósít, a felületen meghatározott összes módszert végre kell hajtania, vagy elvont osztálynak kell nyilvánítania. A Java-ban az objektum-referencia típusa interfész típusként definiálható. Ennek az objektumnak vagy semlegesnek kell lennie, vagy egy olyan objektumnak kell lennie, amely az adott felületet megvalósítja. Az Implements kulcsszó használatával a Java-ban több interfészt is megvalósíthat egyetlen osztályba.
Mi a különbség az absztrakt osztály és az interfész között??
Az absztrakt osztályok általában egy elvont fogalmat vagy egy entitást képviselnek, részleges vagy végrehajtás nélküli. Másrészt az interfész egy elvont típus, amelyet az osztályok által végrehajtandó szerződés meghatározására használnak. Az absztrakt osztályokat örökölni kell (vagy ki kell terjeszteni), míg az interfészeket végre kell hajtani. Az absztrakt osztályok absztrakt módszereket tartalmazhatnak, míg az interfészek csak absztrakt módszereket tartalmazhatnak. Az absztrakt osztályok bármilyen változót tartalmazhatnak, de az interfészek csak állandókat határozhatnak meg. Az osztály nem egynél több elvont osztálytól örökölhet, hanem több interfészt is megvalósíthat. Egy interfész nem valósíthat meg más interfészt. Az interfész azonban kiterjesztheti az osztályt.