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 astratta | Interfaccia |
---|---|
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