Abstraktná trieda verzus rozhranie
Abstraktná trieda (alebo typ) je typ v nominatívnom typovom systéme vyhlásenom programom. Hoci názov naznačuje, abstraktná trieda môže alebo nemusí obsahovať abstraktné metódy alebo vlastnosti. Trieda rozlíšenia sa týka rôznych jazykových konštrukcií, ktoré sa môžu použiť na implementáciu abstraktných typov. Abstraktné triedy môžu byť charakterizované problémom dizajnu, ktorý udržuje najlepšie objektovo orientované programovanie a ich nedokončenú povahu.
Rozhranie je abstraktný typ, ktorý triedy musia implementovať, aby špecifikovali rozhranie (všeobecne povedané). Rozhrania môžu obsahovať iba podpisy metód a konštantné vyhlásenia (statické aj konečné), nikdy definície metód. Rozhrania simulujú viacnásobné dedičstvá a používajú sa na kódovanie podobností zdieľaných medzi rôznymi typmi tried.
Abstraktné typy je možné vytvárať, označovať alebo simulovať niekoľkými rôznymi spôsobmi. Programátor môže označiť abstraktné typy výslovným použitím abstraktného slova, zahrnutím jednej alebo viacerých metód do definície triedy, dedenia z iného abstraktného typu bez toho, aby nahradil chýbajúce funkcie potrebné na dokončenie definície triedy, alebo zaslaním konkrétnej metódy na objektovo orientovaný programovací jazyk známy ako tento, ktorý metódu neimplementuje priamo.
Rozhrania možno definovať pomocou abstraktných metód. Triedy sa môžu implementovať aj do rozhraní. Ak trieda implementuje rozhranie a neimplementuje všetky svoje metódy, musí sa použiť signifikantný abstrakt, inak tento signatár nie je potrebný (pretože všetky rozhrania sú neodmysliteľne abstraktné). Triedy môžu implementovať aj viac rozhraní.
Zatiaľ čo rozhrania sa používajú na špecifikovanie generických rozhraní, na definovanie a presadzovanie protokolu sa môžu použiť abstraktné typy (čo je množina operácií, ktoré musia podporovať všetky objekty, ktoré implementujú požadovaný protokol). Abstraktné typy sa nevyskytujú v jazykoch bez podtypov. Keďže tieto podtypy sú nútené implementovať všetky potrebné funkcie, zabezpečujú správnosť vykonávania programu. Existuje niekoľko spôsobov, ako možno vytvoriť abstraktné typy: úplné abstraktné základné triedy sú triedy, ktoré sú buď výslovne deklarované ako abstraktné, alebo obsahujú abstraktné (neimplementované) metódy; Bežné systémy Lisp Object obsahujú mixíny, ktoré sú založené na systéme príchutí; Java, samozrejme; a vlastnosti, ktoré slúžia ako rozšírenie na Smalltalk.
Zhrnutie:
1. Abstraktné triedy (alebo typy) vyhlasujú programy; Rozhrania sú abstraktné typy, ktoré musia všetky triedy implementovať, aby špecifikovali svoje rozhranie.
2. Abstraktné typy možno označiť výslovne pomocou kľúčového slova; rozhrania sú vo svojej podstate abstraktné, preto ich nemusíte označovať vôbec pomocou kľúčového slova (pokiaľ špecifická trieda implementuje rozhranie, ale nezavádza všetky svoje metódy).