logo

Razlika između apstraktne klase i sučelja

I apstraktna klasa i sučelje koriste se za postizanje apstrakcije gdje možemo deklarirati apstraktne metode. Apstraktna klasa i sučelje ne mogu se instancirati.

css za podebljano

Ali postoje mnoge razlike između apstraktne klase i sučelja koje su navedene u nastavku.

Apstraktni razredSučelje
1) Apstraktna klasa može imaju apstraktne i neapstraktne metode.Sučelje može imati samo apstraktno metode. Od Jave 8, može zadane i statičke metode također.
2) Apstraktna klasa ne podržava višestruko nasljeđivanje .Sučelje podržava višestruko nasljeđivanje .
3) Apstraktna klasa može imati konačne, ne-konačne, statičke i nestatičke varijable .Sučelje ima samo statičke i finalne varijable .
4) Apstraktna klasa može osigurati implementaciju sučelja .Sučelje ne može osigurati implementaciju apstraktne klase .
5) The apstraktna ključna riječ koristi se za deklaraciju apstraktne klase.The ključna riječ sučelja koristi se za deklariranje sučelja.
6) An apstraktna klasa može proširiti drugu Java klasu i implementirati više Java sučelja.An sučelje može samo proširiti drugo Java sučelje.
7) An apstraktna klasa može se proširiti pomoću ključne riječi 'extends'.An sučelje može se implementirati pomoću ključne riječi 'implements'.
8) Na Javu apstraktna klasa može imati članove klase kao što su privatni, zaštićeni itd.Članovi Java sučelja su prema zadanim postavkama javni.
9) Primjer:
javna apstraktna klasa Shape{
javni apstraktni void draw();
}
Primjer:
javno sučelje Drawable{
void draw();
}

Jednostavno, apstraktna klasa postiže djelomičnu apstrakciju (0 do 100%) dok sučelje postiže potpunu apstrakciju (100%).

sretno

Primjer apstraktne klase i sučelja u Javi

Pogledajmo jednostavan primjer gdje koristimo i sučelje i apstraktnu klasu.

 //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(); }} 
Testirajte sada

Izlaz:

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