No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Curso Avanzado de Java SE

Curso Avanzado de Java SE

Anahí Salgado Díaz de la Vega

Anahí Salgado Díaz de la Vega

Diferencia Interfaces y Clases Abstractas

19/40
Recursos

Aportes 19

Preguntas 2

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Por enésima vez, no es Visualizable, es Viewable.

"En las clases abstractas se piensa más en objetos, mientras que en las interfaces se piensa más en acciones en común para muchos objetos"

Este video lo vi en el curso de POO de Java. Pero esta bueno volver a verlo y reforzar el conocmiento.

Las clases abstractas y las interfaces coinciden en sus atributos, pero no se pueden crear instancias ni objetos, pero al heredarla se tienen que implementar todos sus metodos.

Las interfaces hacen lo mismo pero aqui no se tienen que implementar todos los metodos si no se utilizan.

Yo trato de pensarlo así. Las clases abstractas, como cualquier otra clase, usan la herencia para transferir sus atributos, pero las interfaces con sobre comportamiento.

Ejemplo: Puedes usar una clase abstracta Animal de la cual heredan las clases Insecto, Mamifero, Ave. Una vez hecha la herencia, te vez tentado crear en Ave el método volar(); sin embargo te das cuenta que no todas las aves vuelan (ejm: pingüinos) y que además hay mamiíferos que sí vuelan.

Yo creo que comportamiento es la palabra clave. Un comportamiento similar aparece indistintamente de la relación entre dos clases.

diferencias entre clases abstractas y interfaces

las clases abstratas:

  • se declara con la palanbra reservada de abstarct
  • un método abstracto debe ser publico para así después añadir su comportamiento al ser llamado.
    -no se pueden crear nuevas instancias

las interfaces :

  • para java 8 permite implementar conportamineto dentro de los metodos por meio del modificador default.
    en java 9 permite usar metodos de private .

alta musica le pusieron al clip

¿ Cuándo utilizar cada una ?
Usaremos interfaces para implementar métodos que se comporten entre familias. Es decir la relación que va más allá de la herencia entre dos clases.

Usaremos clases abstractas para definir subclases, esta siempre deberá ser heredada para poder utilizar y sobre escribir métodos de la clase padre.

Abstractas: Objetos.
Interfaces: Acciones.

Hola @anncode, una pregunta… ¿a qué te refieres cuando dices “Una buena práctica es que el diseño de las aplicaciones siempre esté orientado a interfaces y no a la implementación”?
Gracias, Saludos y excelente curso

Otra diferencia bien significativa hasta donde tengo entendido es que las Clases abstractas tienen atributos y las interfaces no. Un ejemplo es que tengamos una clase Abstracta figura que tiene atributos como base y altura, esto lo tiene en comun figuras como circulos, triangulos. Las clases como circulo y triangulo pueden heredar de Figura. Ahora cada una de estas tiene sus atributos como area y perimetros. Estos pueden tener metodos de obtener área y perimetro, que se van a comportar de manera diferente porque no se calculan de la misma manera.

Las interfaces no tienen atributos y otra caracteristica es que las interfaces se tienen que implementar obligatoriamente en la clase que las implementa (valga la redundancia), mientras que los metodos abstractos de clases abstractas, no tienen que implementarse forzosamente.

Buena sintesis!!

❤️

Excelente explicación de las interfaces y las clases abstractas

buena explicación!!!

Que buena explicación!

Genial.

Muchas gracias por la explicación sobre las diferencias entre clases abstractas y las interfaces.

buena explicación 😃 gracias