⊗ppOpIfInr 65 of 107 menu

Interfaces en POO en PHP

Como ya sabes, las clases abstractas representan un conjunto de métodos para sus descendientes. Una parte de estos métodos puede implementarse en la propia clase, y otra parte de los métodos puede declararse abstracta y requerir implementación en las clases hijas.

Imaginemos una situación en la que tu clase abstracta representa solo un conjunto de métodos públicos abstractos, sin agregar métodos con implementación.

En realidad, tu clase padre describe la interfaz de los descendientes, es decir, el conjunto de sus métodos públicos, obligatorios para su implementación.

Para qué necesitamos esto: para cometer menos errores al programar - al describir todos los métodos necesarios en la clase padre, podemos estar seguros de que todos los descendientes los implementarán realmente.

Cuándo ayuda esto: supongamos que creamos nuestra clase padre y varias clases hijas. Si después de un tiempo, por ejemplo, un mes después, decidimos crear otra clase hija, seguramente ya habremos olvidado los detalles de nuestro código y podríamos olvidarnos de escribir la implementación de algún método en la nueva clase hija. Sin embargo, el propio PHP no permitirá que se pierda el método - y simplemente mostrará un error.

Lo mismo se aplica a otro programador que trabaje en tu proyecto. Supongamos que el código de la clase padre lo escribiste tú, y luego tu colega decide crear otra clase hija. Tu colega tampoco podrá olvidar un par de métodos.

Sin embargo, hay un problema: en realidad hicimos nuestra clase padre para escribir en ella métodos públicos abstractos, pero nosotros mismos o nuestro colega tenemos la posibilidad de accidentalmente agregar a esta clase un método no público o no abstracto.

Supongamos que queremos prohibir físicamente hacer en la clase padre métodos distintos a los métodos públicos abstractos. En PHP, para esto, en lugar de clases abstractas, se pueden usar interfaces.

Las interfaces representan clases en las que todos los métodos son públicos y no tienen implementación. El código de los métodos debe ser implementado por las clases que heredan (implementan) las interfaces.

Las interfaces se declaran de la misma manera que las clases ordinarias, pero usando la palabra clave interface en lugar de la palabra class.

Para la herencia de interfaces se usa una terminología ligeramente diferente: se dice que las clases no heredan de interfaces, sino que las implementan. En consecuencia, en lugar de la palabra extends se debe usar la palabra clave implements.

No se puede crear un objeto de una interfaz. Todos los métodos de la interfaz deben declararse como public y no deben tener implementación. Una interfaz puede tener solo métodos, no propiedades. Tampoco se puede crear una interfaz y una clase con el mismo nombre.

Español
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Usamos cookies para el funcionamiento del sitio, análisis y personalización. El procesamiento de datos se realiza de acuerdo con la Política de privacidad.
aceptar todas configurar rechazar