No tienes acceso a esta clase

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

Curso de Java SE Orientado a Objetos

Curso de Java SE Orientado a Objetos

Anahí Salgado Díaz de la Vega

Anahí Salgado Díaz de la Vega

Diferencias entre las Interfaces y las Clases Abstractas

29/38
Recursos

Aportes 42

Preguntas 2

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Regístrate o inicia sesión para participar.

Clase Abstracta: No se instancian, solo se heredan. Cierto? 😃

No me quedó claro la última parte de que una aplicación debe estar orientada a interfaces. Acaso estas no deben ser “implementadas” por las clases?
O indica que las aplicaciones deben estar orientadas a interfaces por sobre clases abstractas?

“Forma en como nombramos:
Clase abstracta: pensamos en objetos
Interfaz: pensamos en acciones que pueden tener muchos objetos”

Aquí unas guías de complemento y su uso:
Clase Abstracta: https://n9.cl/aju1
Interfaces: https://n9.cl/h5lh

Me causa un poco de conflicto y siento que lo hará en el examen, el hecho de que diga que no se puede heredar de una clase abstracta y luego diga que hay un pequeño hack para hacer una instancia

Las Clases Abstractas sirven para definir SubClases, la implementación de los métodos de las Clase Abstractas es opcional, para utilizar sus métodos debe ser heredada por una SubClase y la herencia de métodos es lineal.
Las Interfaces cuentan modificadores de acceso para métodos(default, private) lo que permite que la implementación de un método sea opcional como las clases Abstractas, los métodos de la Interface pueden implementaarse en diferentes familias, es decir, la relación va mas allá de la relación entre dos clases y la herencia de métodos deja de ser lineal.



Porque las interfaces tienen en común que usualmente se les encuentra con la palabra “-able” al final? Según entiendo cualquier metodo como “Run” podria ser implementado en otras clases.

😀 Esta sección nos permite determinar las diferencias que existen entre una clase abstracta y una interfaz.

Super!!

Excelente explicación, muy bien diseñada la animación para explicar es genial

Alguien que le quite la musica desesperante de fondo por favor

Clase abstracta = pensar más en los objetos
Interfaces = pensar más en las acciones comunes (métodos) de varios objetos

  • Interfaces
    Nuevo Modificador de Acceso

Private

Default

Se utiliza para implementar métodos abstractos

Los métodos pueden implementarse en muchas familias de clases

La implementación de métodos dejara de ser lineal.

Se enfoca el los métodos y es común encontrar nombres como runnable, visualizable,

  • Clases abstractas

Se utiliza para definir clases hijas

No podre instanciarla, únicamente heredarla

La herencia se métodos seguirá de manera lineal

No podemos crear métodos

Se enfoca mas en las subclases

  • Abstraccion

Concentrarse en interfases

Comportamiento común

Declaración de métodos

Por favor quiten esa música horrible del video o suban el volumen de la voz para poder centrarnos en lo importante.
Gracias

Porfa quiten la musica de fondo, o bajenle, distrae.

Clases abstractas -> Objetos
Instancias -> Comportamientos

Diferencias entre las interfaces y las clases abstractas

Las interfaces tiene modificadores de acceso (default y private), esto significa que es posible añadir comportamiento a métodos de una interfaz. Entonces una interfaz ahora tendrá métodos con implementación y otros sin ella, igual que una clase abstracta.

Una clase abstracta solo se utilizará para definir subclases, es decir, esta siempre debe ser heredada para poder reutilizar y sobrescribir sus métodos. De estas no se puede crear instancias, por lo que la herencia de métodos se hará de forma lineal.
Una clase abstracta sólo servirá para redefinir nuevas clases sin la necesidad de crear nuevos objetos.


Las interfaces tiene métodos que pueden implementarse en diferentes familias de clases, la implementación de los métodos dejará de ser lineal.

Las interfaces se utilizan cuando se tienen métodos que se pueden implementar en muchas familias, es decir, la relación va mas allá de la relación entre dos clases.


Otra diferencia está en cómo se nombran. Para la Clase Abstracta pensaremos más en objetos y en las interfaces en las acciones que pueden tener en común muchos objetos.

Una buena práctica es que el diseño de las aplicaciones siempre esté orientado a interfaces y no a la implementación, para esto:

  • Crea buenas abstracciones
  • Intenta encontrar el comportamiento común
  • Enfócate en la declaración de métodos.

Muy bonito y todo la clase así, pero es más difícil tomar anotaciones así, e igual comprenderlo.

excelente 😃 hacia falta otra aclaración XD

si, bastante mas claro asi

Genial.

Muy buena la explicación, Gracias!

excelente explicacion, me gusto mucho la animacion, cual la herramienta para hacer estar animaciones?

Estupenda manera de abordar la diferencia entre las clases abstractas y las interfaces, la principal diferencia es que las primeras se enfocan en ayudar a la creación de subclases por medio de la herencia para hacer la aplicación más eficiente. Por el otro lado las interfaces, se centran en el compartimiento que se les pueda brindar a las clases.

Genial ,quedo más claro la diferencia entre las interfaces y las clases abstractas.

Alguien me podria dar un ejemplo de cuando nos beneficiaria usar herencia de una clase QUE NO SEA Abstracta?

Excelente

Mucho mas claro

¡Muy buena explicación!

Clase abstractas
Únicamente se utilizará para definir subclases, esta siempre deberá ser heredada para poder utilizar y sobrescribir los métodos. Una restricción que tiene esta clase, es que naturalmente no se puede crear instancias ni objetos a partir de ella únicamente solo se podrá heredarla. La herencia de métodos se llevará de forma lineal de una clase padrea a una clase hijo. Solo Servirá para redefinir nuevas clases sin necesidad de crear nuevos objetos.

Interfaces
Tenemos una estructura similar de métodos abstractos y no abstractos. Pero aquí la vista principal será los métodos que estos podrán implementar en muchas familias de clases. La implementación de los métodos dejará de ser lineal.

Usaremos interfaces para implementar métodos que se comparten entre familias. La relación va más allá de la herencia entre dos clases. La forma en que nombramos una clase abstracta y una interfaces. Abstractas pensaremos más en objetos y en las interfaces pensaremos más en las acciones en que puede tener en común muchos objetos.

Buenas gente!

Aquí les dejo un link a un post que me permitió ir un poco mas allá sobre aquello de la “composición por sobre la herencia”

Click aqui para ir al post

Dejo advertido que no es mía la pagina ni nada, pero la manera en la que explican todo es bastante clara.

Un saludo a [email protected]




ya un poco mas claro ahora

Java es muy amplio no es suficiente con las bases de clases y objetos, el tema de las interfaces es mas profundo, aumentando la complejidad.

Mis apuntes de esta Clase:

Diferencias entre las Interfaces y las Clases Abstractas

Las interfaces ahora cuentan con nuevos modificadores de acceso: default y private lo que significa que ahora se puede agregar comportamiento a los métodos de una interfaz, por lo que una interfaz tendrá métodos con implementación y otros sin implementación, exactamente igual que en una Clase abstracta.

Diferencias

  • Clases abstractas

    Se usan para definir subclases, por lo que siempre debe ser heredada para poder llamar y sobrescribir los métodos. La herencia de métodos se hace de forma lineal; se pueden heredar métodos abstractos y no abstractos. En resumen una Clase abstracta sirve para redefinir nuevas Clases sin tener que crear nuevos objetos. Las Clases abstractas a diferencia de las interfaces se centran más en los objetos

  • Interfaces

    Se tienen métodos abstractos y no abstractos, dichos métodos pueden implementarse en familias de Clases distintas por lo que aquí la implementación de los métodos no es lineal. En resumen las interfaces se usan cuando se quiere crear métodos que se puedan implementar en muchas familias, considerando las acciones que pueden tener en común muchos objetos.

    Nota: una buena práctica es que el diseño de las apps siempre este orientado a interfaces y no a la implementación. Hay que concentrase en crear buenas abstracciones, encontrar comportamientos comunes, tratar de forma independiente los módulos.

En la abstracta pensaremos mas en objetos (no podemos crear objetos) xd ? y en las interfaces en las acciones que pueden tener muchos objetos…

¿a que refiere que el diseño de una aplicación este orientado a interfaces y no a la implementación?

Quedo claro.