Abstraktní třída a rozhraní

Anonim

Abstraktní třída vs. rozhraní

Abstraktní třída (nebo typ) je typ v systému nominativního typu deklarovaný programem. Ačkoli to název naznačuje, abstraktní třída může nebo nemusí obsahovat abstraktní metody nebo vlastnosti. Rozlišovací třída se týká různých jazykových konstrukcí, které mohou být použity k implementaci abstraktních typů. Abstraktní třídy lze charakterizovat konstrukčním problémem, který udržuje s nejlepším objektově orientovaným programováním a jejich nedokončenou povahou.

Rozhraní je abstraktní typ, který musí třídy implementovat, aby specifikoval rozhraní (obecně řečeno). Rozhraní mohou obsahovat pouze podpisy metod a konstantní deklarace (statické a konečné), nikdy definice metod. Rozhraní simulují několik dědičností a používají se k kódování podobností sdílených mezi různými typy tříd.

Abstraktní typy mohou být vytvořeny, označeny nebo simulovány několika různými způsoby. Programátor může znamenat abstraktní typy pomocí explicitního výrazu pro klíčové slovo tím, že zahrnuje jednu nebo více metod v definici třídy, dědí z jiného abstraktního typu bez přepsání chybějících funkcí nezbytných pro dokončení definice třídy nebo odesláním konkrétní metody objektově orientovanému programovací jazyk známý jako tento, který metoda přímo neimplementuje.

Rozhraní lze definovat pomocí abstraktních metod. Třídy mohou být také implementovány v rozhraní. Pokud třída implementuje rozhraní a nerealizuje všechny jeho metody, musí být použit abstrakt signifiers, jinak signifikant není nutný (protože všechna rozhraní jsou neodmyslitelně abstraktní). Třídy mohou také implementovat více rozhraní.

Zatímco rozhraní slouží k zadání obecných rozhraní, abstraktní typy mohou být použity k definování a vynucení protokolu (což je soubor operací, které musí podporovat všechny objekty, které implementují požadovaný protokol). Abstraktní typy se nevyskytují v jazycích bez subtypů. Vzhledem k tomu, že takové podtypy jsou nuceny implementovat veškeré potřebné funkce a zajišťovat správnost provádění programu. Existuje několik způsobů, jak lze vytvářet abstraktní typy: úplné abstraktní základní třídy jsou třídy, které jsou buď explicitně deklarovány jako abstraktní, nebo obsahují abstraktní (neimplementované) metody; Common Lisp Object Systems zahrnují mixiny založené na systému Flavors; Java, samozřejmě; a vlastnosti, které působí jako rozšíření pro Smalltalk.

Souhrn: 1. Abstraktní třídy (nebo typy) deklarují programy; rozhraní jsou abstraktní typy, které musí všechny třídy implementovat, aby specifikovaly jejich rozhraní. 2. Abstraktní typy mohou být označeny pomocí klíčového slova explicitně; rozhraní jsou neodmyslitelně abstraktní, proto nemusí být klíčová slova označována vůbec (pokud konkrétní třída implementuje rozhraní, ale nerealizuje všechny jeho metody).