Abstraktní třída a rozhraní se většinou používají pro abstrakci, jsou však velmi odlišné. Oba jsou základní komponenty Java, ale používají svůj vlastní software. Oba termíny mohou být navzájem synonymní, ale nemohou být vzájemně zaměnitelné.

Mezi nimi jsou značné rozdíly. Pokud je metoda rozhraní ve výchozím nastavení abstraktní, může abstrakt zahrnovat jak abstraktní, tak abstraktní metody. Od verze Java 8 jsou tato rozhraní také metodickými pokyny a v jazyce Java mohou mít statické i standardní metody. Podívejme se na ně podrobněji.

Rozdíl mezi existující abstraktní třídou a rozhraním Java

Co je abstraktní třída v Javě?

V Javě je abstraktní třída třídou, která byla prohlášena za abstraktní - může nebo nemusí mít abstraktní metody. Toto je velmi podobné rozhraní Java, protože může zahrnovat standardní provedení. Stejně jako objektově orientované programování jsou abstrakce v jazyce Java implementovány prostřednictvím abstraktních tříd a rozhraní. V Javě znamená abstrakce skrývání nevýznamných detailů od uživatele, zatímco minimalizuje složitost a zaměřuje se pouze na kritické detaily, aby se zvýšila účinnost. Klíčové slovo „Abstrakt“ se používá v deklaraci třídy k vytvoření abstraktní třídy před klíčovým slovem třídy.

Souhrnná třída může nebo nemusí mít abstraktní metody (metody bez těla), ale pokud existuje alespoň jedna abstrakční metoda, měla by být deklarována jako abstraktní. Abstraktní metody však lze použít pouze v abstraktní třídě, ale pouze pro výchozí chování. Souhrnné metody mohou mít modifikátory vstupu, jako jsou osobní, veřejné, statické a chráněné, v závislosti na úrovni pohledu. Závěrečnou třídu nelze vytvořit a neposkytuje 100% abstrakci, protože může mít specifickou metodu.

Co je rozhraní?

Ačkoli rozhraní vypadá jako třída, není. Protože Java nepodporuje vícenásobné dědictví, někdy je rozhraní vhodné pro poskytnutí základu pro hierarchii tříd. Rozhraní je plán třídy používaný k dosažení abstrakce v Javě. Obsahuje abstraktní metody a statické konstanty. Jednoduše řečeno, rozhraní je sada abstraktních metod používaných k definování chování, které by třída měla provádět. Na rozdíl od současné třídy poskytuje rozhraní úplnou abstraktnost v Javě. Může mít metody i proměnné jako třída, ale metody deklarované na rozhraní jsou abstraktní.

Rozdíl mezi existující abstraktní třídou a rozhraním Java

  1. V Javě, abstraktní třídě a rozhraní “multi-dědičnost” - Ačkoli abstraktní třída a rozhraní jsou hlavně používány pro abstrakci, oni jsou docela odlišní od sebe navzájem. Ačkoli abstraktní třída je třída, rozhraní je rozhraní. To znamená, že rozhraní se může rozšířit pouze na jiné rozhraní Java, zatímco abstraktní třída může v Java provádět více dědičností. Java nepodporuje vícenásobné dědictví, ale Java může mít více dědictví. Abstraktní třída v Javě a „Typ metody“ rozhraní - Dva hlavní rozdíly jsou v tom, že rozhraní může mít pouze abstraktní metody, a abstraktní třída může mít abstraktní i ne abstraktní metody. Ale protože Java 8, rozhraní může mít standardní i statické metody. V Javě mohou abstraktní třídy a rozhraní „modifikátory vstupu“ - abstraktní třída mít modifikátory otevřeného, ​​osobního a chráněného přístupu, ale metody rozhraní jsou otevřené a abstraktní. Pomocí metod rozhraní nelze použít jiný modifikátor vstupu. V Javě „implementujte“ abstraktní třídu a rozhraní - abstraktní třída zajišťuje implementaci rozhraní. Rozhraní zase nemůže poskytovat implementaci abstraktní třídy. V Javě se abstraktní třída a „klíčové slovo“ rozhraní používají k deklaraci abstraktního stylu abstraktní třídy, ale rozhraní jsou úplně jiným příběhem; mohou mít pouze hmotnost, statickou konečnou stabilitu a deklaraci metody. V Javě, abstraktní třída a „použití“ rozhraní - ačkoli je rozhraní ideální pro deklarování typů, abstraktní třída je nejvhodnější pro opakované použití kódu a evoluci. Rozhraní je jako třída, ale ne třída. V Javě je „spolehlivost“ abstraktní třídy a rozhraní dalším důležitým rozdílem mezi abstraktní třídou a rozhraním, přičemž druhé rozhraní je o něco rychlejší než první, protože v Javě se vyhledávání obvykle provádí s rozhraním dříve, než se zavolá zrušená metoda. 'je připojen. Abstrakt třídy a rozhraní třídy Javascript „Konečné proměnné“ - proměnné deklarované v rozhraní jsou ve výchozím nastavení konečné, zatímco abstraktní třída může nebo nemusí mít nekonečné proměnné.

Rozhraní abstraktní třídy a Java: srovnávací tabulka

Shrnutí abstraktní třídy a rozhraní v Javě

Pro abstrakt se používá jak abstraktní třída, tak rozhraní; mezi nimi však existuje spravedlivý podíl. Hlavní rozdíl mezi nimi souvisí s metodami abstrakce. První může nebo nemusí mít abstraktní metody a druhá je jasně abstraktní. Abstraktní třída může mít jak abstraktní, tak ne abstraktní metody. Rozhraní může zase mít pouze abstraktní metody, takže je nelze implementovat, což znamená, že rozhraní prostě nemůže mít ne abstraktní metody. Neexistuje žádná abstraktní třída, která zakazuje vytváření motivů. Rozhraní může zase vypadat jako třída, ale ne.

Reference

  • Bloch, Joshua. Průvodce programovacím jazykem Java. Boston: Addison-Wesley, 2001. Tisk
  • Bloch, Joshua. Průvodce programovacím jazykem Java. Boston: Addison-Wesley, 2001. Tisk
  • Flanagane, Davide. Takže Java. Sebastopol: MeasurementReilly Media, 1996. Tisk
  • Ekkel. Myšlení v Javě. Delhi: Pearson Education India, 2006. Tisk
  • "Image Credit: https://stackoverflow.com/questions/1913098/what-is-the-difference-between-an-interface-and-abstract-class"