logo

Differenza tra classe astratta e interfaccia

Sia la classe astratta che l'interfaccia vengono utilizzate per ottenere l'astrazione in cui possiamo dichiarare i metodi astratti. Non è possibile istanziare né la classe astratta né l'interfaccia.

mvc nel quadro primaverile

Ma ci sono molte differenze tra la classe astratta e l'interfaccia che vengono fornite di seguito.

Classe astrattaInterfaccia
1) La classe astratta può hanno astratto e non astratto metodi.L'interfaccia può avere solo astratto metodi. A partire da Java 8, può avere metodi predefiniti e statici Anche.
2) Classe astratta non supporta l'ereditarietà multipla .Interfaccia supporta l'ereditarietà multipla .
3) Classe astratta possono avere variabili finali, non finali, statiche e non statiche .L'interfaccia ha solo variabili statiche e finali .
4) Classe astratta può fornire l'implementazione dell'interfaccia .Interfaccia non può fornire l'implementazione della classe astratta .
5) Il parola chiave astratta viene utilizzato per dichiarare la classe astratta.IL parola chiave dell'interfaccia viene utilizzato per dichiarare l'interfaccia.
6) Un classe astratta può estendere un'altra classe Java e implementare più interfacce Java.UN interfaccia può estendere solo un'altra interfaccia Java.
7) Un classe astratta può essere esteso utilizzando la parola chiave 'extends'.UN interfaccia può essere implementato utilizzando la parola chiave 'implement'.
8) A Giava classe astratta può avere membri della classe come privato, protetto, ecc.I membri di un'interfaccia Java sono pubblici per impostazione predefinita.
9) Esempio:
classe astratta pubblica Forma{
public abstract void draw();
}
Esempio:
interfaccia pubblica Drawable{
disegno vuoto();
}

Semplicemente, la classe astratta raggiunge un'astrazione parziale (da 0 a 100%) mentre l'interfaccia raggiunge un'astrazione completa (100%).

Esempio di classe astratta e interfaccia in Java

Vediamo un semplice esempio in cui utilizziamo sia l'interfaccia che la classe astratta.

 //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(); }} 
Provalo adesso

Produzione:

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