Buenos días gente. Primero que nada feliz navidad un poquito atrasada, espero que la hayas pasado lindo. Bueno mi duda es esa. que diferencia hay entre las clases abstractas y la interface? porque veo que son lo mismo. Desde ya muchas gracias.
Buenos días gente. Primero que nada feliz navidad un poquito atrasada, espero que la hayas pasado lindo. Bueno mi duda es esa. que diferencia hay entre las clases abstractas y la interface? porque veo que son lo mismo. Desde ya muchas gracias.
Hola, Gisel! Espero que estés bien.
Felices fiestas por aquí. Deseo salud y alegría para usted y su familia también. Felices fiestas. -
Cuando tuve contacto con clase abstracta e interfaz tuve esa misma duda, sus diferencias son sutiles cuando estamos aprendiendo.
Pero la documentación java es nuestra guía: Interfaces/Abstract.
Interfaz
Soporta herencia múltiple: una clase puede implementar múltiples interfaces;
Solo permite métodos abstractos: Ningún método con implementación. Tenemos algunas excepciones que llegaron con** Java 8**, pero esa es la idea principal;
No contiene atributos: Esta es otra regla que tiene una excepción. Si bien es común oír que las interfaces no guardan el estado de la clase porque no soportan la instancia de atributos, todavía pueden contener atributos constantes de clase public
static
final
;
No contiene constructor;
¿Cuándo utilizar? Lo ideal es utilizar la interfaz cuando varias clases diferentes comparten solo la firma de sus métodos. En otras palabras, podemos tener varias clases sin ninguna relación entre sí, pero si comparten las funcionalidades ofrecidas por la interfaz que estamos creando, entonces tiene todo el sentido que estas clases la implementen.
Conclusión: interfaces están ahí para dictar lo que una clase debe hacer, ayudando a definir qué habilidades las clases que firmen ese "pacto" deben poseer.
Clase Abstracta
No admite herencia múltiple;
Puede contener métodos concretos o abstractos: Esto quiere decir que todos los métodos de una clase abstracta pueden ser tanto concretos como, también, todos pueden ser abstractos;
Puede contener atributos de todos los tipos;
Contiene constructor;
Cuándo utilizar? A diferencia de la interfaz que puede estar involucrada con diversas clases sin ninguna relación entre sí, una clase abstracta sigue siendo una clase. Y sabemos que cuando una clase X hereda de una clase Y es lo mismo que decir que X es una Y. Es decir, cuando queremos crear varias clases que compartirán un mismo comportamiento, una clase abstracta es el componente ideal para ser la base para la creación de todas ellas, sirviendo como un molde para las futuras clases que derivarán de ella.
Conclusión: clases abstractas definen la identidad de sus clases derivadas dictando lo que y como una clase debe comportarse, lo que aumenta el acoplamiento entre clases, pero tiene total sentido en algunas situaciones.
Hay otras diferencias que usted entenderá a lo largo de su desarrollo. Pero no se preocupa.. consulte siempre la documentación oficial.
Mucho éxito en todo lo que te propongas y si tienes alguna duda aquí estaremos para apoyarte. =)