Rozhranie vs abstraktná trieda v Jave: Aký je rozdiel?

Obsah:

Anonim

Čo je to rozhranie?

Rozhranie je návrh, ktorý je možné použiť na implementáciu triedy. Rozhranie neobsahuje žiadne konkrétne metódy (metódy, ktoré majú kód). Všetky metódy rozhrania sú abstraktné.

Rozhranie nemožno vytvoriť. Triedy, ktoré implementujú rozhrania, však môžu byť inštancované. Rozhrania nikdy neobsahujú premenné inštancie, ale môžu obsahovať verejné statické konečné premenné (tj. Premenné konštantnej triedy)

Čo je abstraktná trieda?

Trieda, ktorá má vo svojej deklarácii kľúčové slovo abstrakt, sa nazýva abstraktná trieda. Abstraktné triedy by mali mať aspoň jednu abstraktnú metódu. tj metódy bez tela. Môže mať niekoľko konkrétnych metód.

Abstraktné triedy vám umožňujú vytvárať plány pre konkrétne triedy. Ale trieda dedenia by mala implementovať abstraktnú metódu.

Abstraktné triedy nemôžu byť inštancované.

Dôležité dôvody používania rozhraní

  • Na dosiahnutie abstrakcie sa používajú rozhrania.
  • Navrhnuté na podporu dynamického rozlíšenia metód za behu
  • Pomáha vám dosiahnuť voľné spojenie.
  • Umožňuje vám oddeliť definíciu metódy od hierarchie dedičstva

Dôležité dôvody pre použitie abstraktnej triedy

  • Abstraktné triedy ponúkajú predvolené funkcie pre podtriedy.
  • Poskytuje šablónu pre budúce špecifické triedy
  • Pomáha vám definovať spoločné rozhranie pre jeho podtriedy
  • Abstraktná trieda umožňuje opätovné použitie kódu.

Rozhranie vs. Abstraktná trieda

Abstraktná trieda vám umožňuje vytvoriť funkčnosť, ktorú môžu podtriedy implementovať alebo prepísať, zatiaľ čo rozhranie vám umožňuje iba funkcionalitu uviesť, ale nie implementovať. Trieda môže rozšíriť iba jednu abstraktnú triedu, zatiaľ čo trieda môže implementovať viac rozhraní.

Parametre Rozhranie Abstraktná trieda
Rýchlosť Pomaly Rýchlo
Viacnásobné dedičstvo Implementujte niekoľko rozhraní Iba jedna abstraktná trieda
Štruktúra Abstraktné metódy Abstraktné a konkrétne metódy
Kedy použiť Budúce vylepšenie Aby sa zabránilo nezávislosti
Dedenie / implementácia Trieda môže implementovať viac rozhraní Trieda môže zdediť iba jednu abstraktnú triedu
Predvolená implementácia Pri pridávaní nových vecí do rozhrania je nočnou morou nájsť všetkých implementátorov a implementovať novo definované veci. V prípade Abstraktnej triedy môžete využiť predvolenú implementáciu.
Modifikátory prístupu Rozhranie nemá modifikátory prístupu. Všetko definované vo vnútri rozhrania sa považuje za verejný modifikátor. Abstraktná trieda môže mať modifikátor prístupu.
Kedy použiť Je lepšie používať rozhranie, keď rôzne implementácie zdieľajú iba podpis metódy. Polymorfná hierarchia typov hodnôt. Malo by sa použiť, keď rôzne implementácie rovnakého druhu zdieľajú spoločné správanie.
Dátové polia rozhranie nemôže obsahovať dátové polia. trieda môže mať dátové polia.
Predvolené nastavenie viacerých dedičstiev Trieda môže implementovať početné rozhrania. Trieda dedí iba jednu abstraktnú triedu.
Implementácia Rozhranie je abstraktné, takže nemôže poskytovať žiadny kód. Abstraktná trieda môže dať úplný predvolený kód, ktorý by mal byť prepísaný.
Použitie modifikátorov prístupu Nemôžete použiť modifikátory prístupu pre metódu, vlastnosti atď. Môžete použiť abstraktnú triedu, ktorá obsahuje modifikátory prístupu.
Využitie Rozhrania pomáhajú definovať periférne schopnosti triedy. Abstraktná trieda definuje identitu triedy.
Definované polia Nie je možné definovať žiadne polia Abstraktná trieda umožňuje definovať polia aj konštanty
Dedenie Rozhranie môže dediť viac rozhraní, ale nemôže dediť triedu. Abstraktná trieda môže zdediť triedu a viac rozhraní.
Konštruktér alebo deštruktor Rozhranie nemôže deklarovať konštruktory alebo deštruktory. Abstraktná trieda môže deklarovať konštruktory a deštruktory.
Limit rozšírení Môže rozšíriť ľubovoľný počet rozhraní. Môže rozšíriť iba jednu triedu alebo jednu abstraktnú triedu súčasne.
Abstraktné kľúčové slovo V kľúčovom slove abstraktného rozhrania je voliteľné označenie deklarácie metódy ako abstraktnej. V abstraktnej triede je kľúčové slovo abstrakt povinné pre deklaráciu metódy ako abstraktnej.
Typ triedy Rozhranie môže mať iba verejné abstraktné metódy. Abstraktná trieda má chránené a verejné abstraktné metódy.

Ukážkový kód pre rozhranie a abstraktnú triedu v Jave

Nasleduje ukážka kódu na vytvorenie rozhrania a abstraktnej triedy v prostredí Java

Syntax rozhrania

interface name{//methods}

Príklad rozhrania Java:

interface Pet {public void test();}class Dog implements Pet {public void test() {System.out.println("Interface Method Implemented");}public static void main(String args[]) {Pet p = new Dog();p.test();}}

Syntax abstraktnej triedy

abstract class name{// code}

Príklad abstraktnej triedy:

abstract class Shape {int b = 20;abstract public void calculateArea();}public class Rectangle extends Shape {public static void main(String args[]) {Rectangle obj = new Rectangle();obj.b = 200;obj.calculateArea();}public void calculateArea() {System.out.println("Area is " + (obj.b * obj.b));}}