logo

Rozdiel medzi abstraktnou triedou a rozhraním

Abstraktná trieda a rozhranie sa používajú na dosiahnutie abstrakcie, kde môžeme deklarovať abstraktné metódy. Abstraktná trieda a rozhranie nie je možné vytvoriť.

Existuje však veľa rozdielov medzi abstraktnou triedou a rozhraním, ktoré sú uvedené nižšie.

Abstraktná triedaRozhranie
1) Abstraktná trieda môže majú abstraktné a neabstraktné metódy.Rozhranie môže mať len abstraktné metódy. Od Java 8 môže mať predvolené a statické metódy tiež.
2) Abstraktná trieda nepodporuje viacnásobné dedičstvo .Rozhranie podporuje viacnásobné dedičstvo .
3) Abstraktná trieda môže mať konečné, nekonečné, statické a nestatické premenné .Rozhranie má iba statické a konečné premenné .
4) Abstraktná trieda môže poskytnúť implementáciu rozhrania .Rozhranie nemôže poskytnúť implementáciu abstraktnej triedy .
5) abstraktné kľúčové slovo sa používa na deklarovanie abstraktnej triedy.The kľúčové slovo rozhrania sa používa na deklarovanie rozhrania.
6) An abstraktná trieda môže rozšíriť ďalšiu triedu Java a implementovať viacero rozhraní Java.An rozhranie môže rozšíriť iba ďalšie rozhranie Java.
7) An abstraktná trieda možno rozšíriť pomocou kľúčového slova „extends“.An rozhranie možno implementovať pomocou kľúčového slova „implements“.
8) Do Javy abstraktná trieda môžu mať členov triedy ako súkromné, chránené atď.Členovia rozhrania Java sú štandardne verejné.
9) Príklad:
verejná abstraktná trieda Tvar{
verejný abstrakt void draw();
}
Príklad:
verejné rozhranie Kresliteľné{
void draw();
}

Jednoducho, abstraktná trieda dosahuje čiastočnú abstrakciu (0 až 100%), zatiaľ čo rozhranie dosahuje úplnú abstrakciu (100%).

Príklad abstraktnej triedy a rozhrania v Jave

Pozrime sa na jednoduchý príklad, kde používame rozhranie aj abstraktnú triedu.

 //Creating interface that has 4 methods interface A{ void a();//bydefault, public and abstract void b(); void c(); void d(); } //Creating abstract class that provides the implementation of one method of A interface abstract class B implements A{ public void c(){System.out.println('I am C');} } //Creating subclass of abstract class, now we need to provide the implementation of rest of the methods class M extends B{ public void a(){System.out.println('I am a');} public void b(){System.out.println('I am b');} public void d(){System.out.println('I am d');} } //Creating a test class that calls the methods of A interface class Test5{ public static void main(String args[]){ A a=new M(); a.a(); a.b(); a.c(); a.d(); }} 
Vyskúšajte to

Výkon:

 I am a I am b I am c I am d