Interfaces En La Programación Orientada A Objetos

Interfaces en la programación orientada a objetos

Pues hoy vamos a hablar de las interfaces en la programación orientada objetos. Si estas siguiendo la serie de artículos dedicados a aprender sobre programación POO ya habrás visto como crear objetos, clases, clases abstractas y habrás aprendido sobre métodos, propiedades y su visibilidad, en fin… un conjunto de conceptos teóricos que te estarán dando una nueva perspectiva sobre la tecnología, o eso espero vamos…

Y hoy precisamente toca eso, ver las interfaces y cómo y cuando podemos implementarlas así que…vamos a ello!

¿Qué son las interfaces?

Las interfaces vienen a ser como una declaración de funcionalidades obligatorias que tienen que realizar aquellas clases que implementen la interface. A diferencia de como vimos con las clases abstractas, las interfaces no declaran sus métodos nunca, tan solo definen los métodos. Esto es, en una interface aparecerá pues el nombre del método junto con su visibilidad y la definición de argumentos para jamás pueden describir código, entonces sería una clase abstracta.

Otra diferencia respecto al uso entre interfaces y clases abstractas es que una clase cualquiera puede implementar tantas interfaces como le de la gana pero únicamente puede heredar de una clase, ya sea abstracta o no, al menos en PHP y esto es lo que se conoce como herencia simple.

Cuando veamos el artículo de herencia de objetos veremos las diferencias entre herencia múltiple y herencia simple.

Volviendo al tema de las interfaces tenemos que saber que en el sentido estricto de la definición, una interface es como si fuera una hoja de ordenes diciéndonos qué es lo que hay que hacer pero no como. Una interface estará formada pues únicamente por constantes y la definición de sus métodos, que jamás serán abstractos (sino hablaríamos de clase abstracta)

Una interface es el claro ejemplo de la abstracción.

Al implementar una interface en una clase se nos está obligando a implementar siempre todos los métodos que defina, nos guste o no, aunque existe una excepción que no se suele utilizar y es que si una clase abstracta implementa una interface, esta no esta obligada a implementar los métodos de la interface.

Para hacer uso de una interface tendremos que hacerlo mediante el operador implements junto al nombre de la clase, tal y como hemos visto cuando heredamos (o extendemos) de otra clase. Pero que esto no te despiste porque no es exclusivo que las interfaces solo se utilicen con implements y las clases con extends ya que las interfaces también pueden heredar de otras interfaces.

Hemos dicho que una interface está formada por la definición de sus métodos y por constantes, pues bien estas constantes funcional igual que si fueran constantes de clases pero se diferencian en que estas no puede ser sobrescritas por la clase/interface que la herede o de lo contrario nos dará un error.

Las interfaces suponen junto con la determinación de tipos de una buena forma de asegurarse de que un determinado objeto contiene ciertos métodos y para ello el operador instanceof() juega un papel muy importante. Checkea el enlace anda 😉

Pues nada amigüitos, se que el tema es complejo debido a que estamos tocando temas bastante abstractos así que si tienes alguna pregunta no dudes en dejármela en los comentarios o en twitter a través del siguiente banner.

@gorkakatua #faqsGorkamu pregúntame por twitter cualquier cosa y vemos cómo lo solucionamos.

Hala a mamarla!

¿Te ha parecido este un artículo de 5 estrellas? Dame tu valoración:
Review Date
Reviewed Item
Interfaces en la programación orientada a objetos
Author Rating
51star1star1star1star1star

Gorka Muñoz Andrés

Me llamo Gorka Muñoz y soy un desarrollador melómano. Combino a la perfección la búsqueda de nuevos grupos con la pasión por la tecnología. Desde chiquitito me ha gustado la programación, ahora que soy mayor estoy metido en el mundo del SEO sin olvidarme del /Dev.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *