Apstraktna klasa i interfejs se koriste za postizanje apstrakcije gdje možemo deklarisati apstraktne metode. Apstraktna klasa i interfejs se ne mogu instancirati.
Ali postoje mnoge razlike između apstraktne klase i interfejsa koje su date u sljedećoj tabeli.
Apstraktna klasa |
Interfejs |
1) Apstraktna klasa može imati apstraktne i ne-apstraktne metode. |
Interfejs može imati samo apstraktne metode. |
2) Apstraktna klasa ne podržava višestruko nasljeđivanje. |
Interfejs podržava višestruko nasljeđivanje. |
3) Apstraktna klasa može imati final, non-final, static i non-static varijable. |
Interfejs ima samo static i final varijable. |
4) Apstraktna klasa može imati static metode, main metod i konstruktor. |
Interfejs ne može imati static metode, main metod ili konstruktor. |
5) Apstraktna klasa može obezbijediti implementaciju interfejsa. |
Interfejs ne može obezbijediti implementaciju apstraktne klase. |
6) Ključna riječ abstract se koristi da deklariše apstraktnu klasu. |
Ključna riječ interface se koristi da deklariše interfejs. |
7) Primjer: |
Primjer: |
Jednostavno, apstraktna klasa postiže djelimičnu apstrakciju (0 do 100%) dok interfejs postiže punu apstrakciju (100%).
Primjer apstraktne klase i interfejsa u javi
Pogledajmo jednostavan primjer gdje koristimo i interfejs i apstraktnu klasu.
//Kreiranje interfejsa koji ima 4 metoda interface A{ void a(); //po default-u, public i abstract void b(); void c(); void d(); } //Kreiranje apstraktne klase koja obezbjeđuje implementaciju jednog metoda A interfejsa abstract class B implements A{ public void c(){System.out.println("I am C");} } //Kreiranje podklase apstraktne klase, sada trebamo da obezbijedimo implementaciju ostalih //metoda 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");} } //Kreiranje test klase koja poziva metode A interfejsa class Test5{ public static void main(String args[]){ A a=new M(); a.a(); a.b(); a.c(); a.d(); }} Ispis na ekranu: I am a I am b I am c I am d
Objektno orijentisano programiranje u Javi Index