logo

Diferencia entre clase abstracta e interfaz

Tanto la clase abstracta como la interfaz se utilizan para lograr la abstracción donde podemos declarar los métodos abstractos. No se pueden crear instancias de la clase abstracta ni de la interfaz.

agregar en matriz java

Pero existen muchas diferencias entre la clase abstracta y la interfaz que se detallan a continuación.

Clase abstractaInterfaz
1) La clase abstracta puede tener abstracto y no abstracto métodos.La interfaz puede tener solo abstracto métodos. Desde Java 8, puede tener métodos predeterminados y estáticos también.
2) clase abstracta no soporta herencia múltiple .Interfaz soporta herencia múltiple .
3) clase abstracta puede tener variables finales, no finales, estáticas y no estáticas .La interfaz tiene sólo variables estáticas y finales .
4) clase abstracta puede proporcionar la implementación de la interfaz .Interfaz no se puede proporcionar la implementación de la clase abstracta .
5) el palabra clave abstracta se utiliza para declarar una clase abstracta.El palabra clave de interfaz se utiliza para declarar la interfaz.
6) Un clase abstracta Puede extender otra clase Java e implementar múltiples interfaces Java.Un interfaz Sólo puede ampliar otra interfaz Java.
7) un clase abstracta se puede ampliar utilizando la palabra clave 'extiende'.Un interfaz se puede implementar usando la palabra clave 'implementos'.
8) A Java clase abstracta Puede tener miembros de clase como privados, protegidos, etc.Los miembros de una interfaz Java son públicos de forma predeterminada.
9) Ejemplo:
Forma de clase abstracta pública {
sorteo público abstracto vacío();
}
Ejemplo:
interfaz pública dibujable{
sorteo nulo();
}

Simplemente, la clase abstracta logra una abstracción parcial (0 a 100%) mientras que la interfaz logra una abstracción total (100%).

¿Cuál es el tamaño de la pantalla de mi computadora?

Ejemplo de clase abstracta e interfaz en Java

Veamos un ejemplo simple en el que usamos tanto la interfaz como la clase abstracta.

 //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(); }} 
Pruébalo ahora

Producción:

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