Č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));}}