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
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |