⊗ppOpIfII 74 of 107 menu

Herencia de clase e implementación de interfaz en POO en PHP

Una clase puede heredar de otra clase y al mismo tiempo implementar alguna interfaz. Consideremos un ejemplo práctico.

Supongamos que queremos crear una clase Programmer, que tendrá un nombre, un salario y una lista de lenguajes, que conoce el programador. Por ahora, nuestra descripción de la clase es bastante vaga: sí, la clase tendrá nombre, salario, lenguajes - pero, ¿qué métodos tendrá nuestra clase?

Describamos nuestra clase con mayor precisión utilizando la interfaz iProgrammer:

<?php interface iProgrammer { public function __construct($name, $salary); public function getName(); public function getSalary(); public function getLangs(); public function addLang($lang); } ?>

Supongamos que revisamos las clases que ya hemos implementado y, resulta, que ya tenemos una clase similar Employee. No implementa todos los métodos de la clase Programmer, pero sí una parte. Aquí está el código de nuestra clase ya existente:

<?php class Employee { private $name; private $salary; public function __construct($name, $salary) { $this->name = $name; $this->salary = $salary; } public function getName() { return $this->name; } public function getSalary() { return $this->salary; } } ?>

Es lógico en nuestro caso hacer que nuestra nueva clase Programmer herede parte de los métodos necesarios de la clase Employee (y la parte restante la implementaremos luego en la nueva clase misma):

<?php class Programmer extends Employee { } ?>

Al mismo tiempo, sabemos que la clase Pogrammer debe implementar la interfaz iProgrammer:

<?php class Programmer implements iProgrammer { } ?>

Combinemos la herencia de la clase Employee y la implementación de la interfaz iProgrammer:

<?php class Programmer extends Employee implements iProgrammer { } ?>

El resultado será que nuestra clase Pogrammer heredará de la clase Employee los métodos __construct, getName y getSalary, y los métodos addLang y getLangs tendremos que implementarlos nosotros:

<?php class Programmer extends Employee implements iProgrammer { public function addLang($lang) { // implementación } public function getLangs() { // implementación } } ?>

A la interfaz iProgrammer no le importa, si los métodos son nativos de la clase o heredados - lo principal es que todos los métodos descritos estén implementados.

Copie el código de mi clase Employee y el código de la interfaz iProgrammer. No copie mi plantilla de la clase Programmer - sin mirar mi código, implemente esta clase usted mismo.

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