logo

Forskjellen mellom abstrakt klasse og grensesnitt

Abstrakt klasse og grensesnitt brukes begge for å oppnå abstraksjon der vi kan erklære de abstrakte metodene. Både abstrakt klasse og grensesnitt kan ikke instansieres.

hei verden med java

Men det er mange forskjeller mellom abstrakt klasse og grensesnitt som er gitt nedenfor.

Abstrakt klasseGrensesnitt
1) Abstrakt klasse kan har abstrakte og ikke-abstrakte metoder.Grensesnitt kan ha bare abstrakt metoder. Siden Java 8 kan den ha standard og statiske metoder også.
2) Abstrakt klasse støtter ikke multippel arv .Grensesnitt støtter multippel arv .
3) Abstrakt klasse kan ha endelige, ikke-endelige, statiske og ikke-statiske variabler .Grensesnitt har kun statiske og endelige variabler .
4) Abstrakt klasse kan gi implementering av grensesnitt .Grensesnitt kan ikke gi implementering av abstrakt klasse .
5) Den abstrakt nøkkelord brukes til å erklære abstrakt klasse.De grensesnitt nøkkelord brukes til å deklarere grensesnitt.
6) An abstrakt klasse kan utvide en annen Java-klasse og implementere flere Java-grensesnitt.An grensesnitt kan bare utvide et annet Java-grensesnitt.
7) An abstrakt klasse kan utvides ved å bruke søkeordet 'utvider'.An grensesnitt kan implementeres ved å bruke søkeordet 'implementer'.
8) Til Java abstrakt klasse kan ha klassemedlemmer som private, beskyttede osv.Medlemmer av et Java-grensesnitt er offentlige som standard.
9) Eksempel:
offentlig abstrakt klasse Shape{
offentlig abstrakt void draw();
}
Eksempel:
offentlig grensesnitt Drawable{
void draw();
}

Ganske enkelt oppnår abstrakt klasse delvis abstraksjon (0 til 100 %), mens grensesnitt oppnår fullstendig abstraksjon (100 %).

Eksempel på abstrakt klasse og grensesnitt i Java

La oss se et enkelt eksempel der vi bruker både grensesnitt 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 nå

Produksjon:

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