Abstracte klasse en interface worden beide gebruikt om abstractie te bereiken, waarbij we de abstracte methoden kunnen declareren. Abstracte klasse en interface kunnen beide niet worden geïnstantieerd.
Maar er zijn veel verschillen tussen abstracte klasse en interface, die hieronder worden gegeven.
Abstracte klasse | Koppel |
---|---|
1) Abstracte klasse kan hebben abstract en niet-abstract methoden. | Interface kan hebben alleen abstract methoden. Sinds Java 8 kan dit het geval zijn standaard en statische methoden Ook. |
2) Abstracte klasse ondersteunt geen meervoudige overerving . | Koppel ondersteunt meervoudige overerving . |
3) Abstracte klasse kan finale, niet-finale, statische en niet-statische variabelen hebben . | Interface heeft alleen statische en definitieve variabelen . |
4) Abstracte klasse kan de implementatie van de interface verzorgen . | Koppel kan de implementatie van abstracte klasse niet bieden . |
5) De abstract trefwoord wordt gebruikt om abstracte klasse te declareren. | De interface-trefwoord wordt gebruikt om de interface te declareren. |
6) Een abstracte klasse kan een andere Java-klasse uitbreiden en meerdere Java-interfaces implementeren. | Een koppel kan alleen een andere Java-interface uitbreiden. |
7) Een abstracte klasse kan worden uitgebreid met het trefwoord 'extends'. | Een koppel kan worden geïmplementeerd met behulp van het trefwoord 'implements'. |
8) Naar Java abstracte klasse kunnen klasleden hebben zoals privé, beschermd, enz. | Leden van een Java-interface zijn standaard openbaar. |
9) Voorbeeld: openbare abstracte klasse Vorm{ openbare abstracte leegte draw(); } | Voorbeeld: openbare interface Tekenbaar{ ongeldig tekenen(); } |
Simpel gezegd bereikt de abstracte klasse gedeeltelijke abstractie (0 tot 100%), terwijl de interface volledige abstractie bereikt (100%).
Voorbeeld van abstracte klasse en interface in Java
Laten we een eenvoudig voorbeeld bekijken waarin we zowel interface als abstracte klasse gebruiken.
//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(); }}Test het nu
Uitgang:
I am a I am b I am c I am d