Hola Omar, excelente observación.
Cuando decimos que una clase hereda de la clase ''madre'', osea que esa clase posee todos los métodos y atributos de la clase ''madre''. Siempre que estamos hablando de herencia, utilizamos la palabra Extends
, pues así pasamos la idea de que la clase ''hija'' es una extensión de la clase ''madre''.
En el caso de las clases abstractas lo mismo ocurre. Son clases así como las demás, todavía como son clases abstractas no la ponemos las implementaciones de cada método o atributo.
Ella sirve sólo como un molde en lo que las clases ''hijas'' obligatoriamente tendrán que seguir, pero ella no puede ser instanciada y no tiene métodos que se puedan utilizar. Osea, las clases abstractas no pueden ser usadas como las clases comunes, para que podamos usar sus métodos, debemos extender esta clase a través de una clase ''hija'', que reescribirá todos los métodos para que podamos usarlo.
Ya las interfaces, no son un tipo de clase. Ellas tienen un comportamiento diferente... no és possible heredar de una interface. Podemos entenderla como un contrato, que al subscribirse, obliga a quien lo firmó a cumplir con el acuerdo que se encuentra en el contrato... De manera similar, la clase que implementa una interface obligatoriamente deberá reescribir todos los métodos de esta interface.
La mayor diferencia entre una interface y una clase abstracta es que podemos implementar más de una interface en una clase... como si estuviéramos firmando vários contratos, pero no podemos hacer una clase heredar de más de una clase. La herencia es siempre única, pero las interfaces se pueden implementadar sin esta restricción. Solo las interfaces usan la palabra Implements
, no la palabra Extends
.
Esperamos haberlo ayudado, cualquier cosa regrese aquí en el foro.
Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios