Razlika između apstraktne klase i interfejsa

Razlika između apstraktne klase i interfejsa

Apstraktna klasa i interfejs se koriste za postizanje apstrakcije gde 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 sledeć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 nasleđivanje. Interfejs podržava višestruko nasleđivanje.
3) Apstraktna klasa može imati final, non-final, static i non-static promenljive. Interfejs ima samo static i final promenljive.
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 obezbediti implementaciju interfejsa. Interfejs ne može obezbediti implementaciju apstraktne klase.
6) Ključna reč abstract se koristi da deklariše apstraktnu klasu. Ključna reč interface se koristi da deklariše interfejs.
7) Primer: public class Shape{ public abstract void draw(); } Primer: public interface Drawable{ void draw(); }
Jednostavno, apstraktna klasa postiže delimičnu apstrakciju (0 do 100%) dok interfejs postiže punu apstrakciju (100%). Primer apstraktne klase i interfejsa u Javi Pogledajmo jednostavan primer gde koristimo i interfejs i apstraktnu klasu:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
//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 obezbeđ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 obezbedimo 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

Comments

comments

Close Menu
Show Buttons
Hide Buttons