Különbség az absztrakt osztály és az interfész között

Absztrakt osztály vs felület

Az absztrakt osztály (vagy típus) a nominációs típusrendszer egyik típusa, amelyet a program deklarált. Noha a név erre utal, absztrakt osztály tartalmazhat absztrakciós módszereket vagy tulajdonságokat, vagy nem. A megkülönböztetési osztály különféle nyelvi konstrukciókra utal, amelyek felhasználhatók az elvont típusok megvalósításához. Az absztrakt osztályokat egy olyan tervezési kérdés jellemzi, amely a legjobb objektum-orientált programozással rendelkezik, és befejezetlen jellege.

Az interfész egy elvont típus, amelyet az osztályoknak végre kell hajtaniuk egy interfész meghatározásához (általános értelemben véve). Az interfészek csak metódusaláírásokat és állandó deklarációkat tartalmazhatnak (statikus és végleges), soha nem a módszerdefiníciókat. Az interfészek több öröklést szimulálnak, és a különféle osztályok között megosztott hasonlóságok kódolására szolgálnak.

Az absztrakt típusok különféle módon képesek létrehozni, jelezni vagy szimulálni. A programozó absztrakt típusokat jelenthet az absztrakt kulcsszó kifejezett felhasználásával, egy vagy több módszer beillesztésével az osztálydefinícióba, egy másik absztrakt típustól örökölve anélkül, hogy felülbírálná az osztálydefiníció elvégzéséhez szükséges hiányzó funkciókat, vagy egy adott módszert elküldhet az objektumorientációra. az úgynevezett programozási nyelv, amely közvetlenül nem valósítja meg a módszert.

Az interfészek elvont módszerekkel definiálhatók. Az osztályok interfészekben is megvalósíthatók. Ha egy osztály megvalósít egy interfészt, és nem valósítja meg az összes módszerét, akkor az aláíró absztraktját kell használni, különben ez az aláíró nem szükséges (mivel az összes interfész eredendően elvont). Az osztályok több felületet is megvalósíthatnak.

Míg az interfészek az általános interfészek meghatározására szolgálnak, absztrakt típusok felhasználhatók a protokoll meghatározására és érvényesítésére (amely olyan műveletek halmaza, amelyet a kívánt protokollt megvalósító összes objektumnak támogatnia kell). Az absztrakt típusok nem fordulnak elő nyelvekben subtyping nélkül. Mivel az ilyen altípusok kénytelenek beépíteni az összes szükséges funkciót, biztosítva a program végrehajtásának helyességét. Az absztrakt típusok létrehozásának számos módja van: a teljes absztrakt alaposztályok olyan osztályok, amelyeket kifejezetten absztraktnak nyilvánítanak, vagy tartalmaznak absztrakt (nem végrehajtott) módszereket; A Common Lisp Object Systems olyan keverékeket tartalmaz, amelyek az Flavors rendszeren alapulnak; Java, természetesen; és a Traits, amely kiterjeszti a Smalltalk-t.

Összefoglaló:
1. Az elvont osztályok (vagy típusok) programokat deklarálnak; Az interfészek elvont típusok, amelyeket minden osztálynak végre kell hajtania az interfész meghatározása érdekében.
2. Az absztrakt típusokat kifejezetten a kulcsszó használatával lehet megjelölni; az interfészek eredendően elvontak, ezért azokat egyáltalán nem kell kulcsszó segítségével megjelölni (kivéve, ha egy adott osztály megvalósít egy interfészt, de nem valósítja meg az összes módszerét).