logo

Forskellen mellem abstrakt klasse og interface

Abstrakt klasse og interface bruges begge til at opnå abstraktion, hvor vi kan erklære de abstrakte metoder. Abstrakt klasse og interface kan begge ikke instansieres.

hej verden med java

Men der er mange forskelle mellem abstrakt klasse og grænseflade, der er angivet nedenfor.

Abstrakt klasseInterface
1) Abstrakt klasse kan har abstrakte og ikke-abstrakte metoder.Interface kan have kun abstrakt metoder. Siden Java 8 kan den have standard og statiske metoder også.
2) Abstrakt klasse understøtter ikke multipel nedarvning .Interface understøtter multipel arv .
3) Abstrakt klasse kan have endelige, ikke-endelige, statiske og ikke-statiske variable .Interface har kun statiske og endelige variable .
4) Abstrakt klasse kan levere implementering af interface .Interface kan ikke levere implementeringen af ​​abstrakt klasse .
5) Den abstrakt søgeord bruges til at erklære abstrakt klasse.Det interface nøgleord bruges til at erklære interface.
6) An abstrakt klasse kan udvide en anden Java-klasse og implementere flere Java-grænseflader.An interface kan kun udvide en anden Java-grænseflade.
7) En abstrakt klasse kan udvides ved at bruge søgeordet 'forlænger'.An interface kan implementeres ved hjælp af søgeordet 'implementer'.
8) Til Java abstrakt klasse kan have klassemedlemmer som private, beskyttede osv.Medlemmer af en Java-grænseflade er som standard offentlige.
9) Eksempel:
offentlig abstrakt klasse Shape{
offentlig abstrakt void draw();
}
Eksempel:
offentlig grænseflade Drawable{
void draw();
}

Simpelthen opnår abstrakt klasse delvis abstraktion (0 til 100%), mens interface opnår fuldstændig abstraktion (100%).

Eksempel på abstrakt klasse og interface i Java

Lad os se et simpelt eksempel, hvor vi bruger både interface og abstrakt klasse.

 //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 det nu

Produktion:

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