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 razred | Suč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