⊗ppOpFnCl 63 of 107 menu

Clases abstractas en POO en PHP

Supongamos que tienes una clase User, y de ella heredan las clases Employee y Student.

Y se supone que vas a crear objetos de las clases Employee y Student, pero objetos de la clase User - no, ya que esta clase solo se utiliza para agrupar propiedades y métodos comunes de sus descendientes.

En este caso puedes prohibir forzosamente crear objetos de la clase User, para que tú u otro programador en algún lugar no los creen accidentalmente.

Para esto existen las llamadas clases abstractas. Las clases abstractas representan clases destinadas a la herencia a partir de ellas. Al mismo tiempo, no se pueden crear objetos de tales clases.

Para declarar una clase como abstracta, necesitas escribir la palabra clave abstract en su declaración:

<?php abstract class User { } ?>

Entonces, escribamos la implementación de la clase abstracta User. Supongamos que tiene una propiedad privada name, así como getters y setters para ella:

<?php abstract class User { private $name; public function getName() { return $this->name; } public function setName($name) { $this->name = $name; } } ?>

El intento de crear un objeto de la clase User causará un error:

<?php $user = new User; // dará un error ?>

Pero heredar de nuestra clase sí será posible. Hagamos la clase Employee, que heredará de nuestra clase abstracta User:

<?php class Employee extends User { private $salary; public function getSalary() { return $this->salary; } public function setSalary($salary) { $this->salary = $salary; } } ?>

Creemos un objeto de la clase Employee - todo funcionará:

<?php $employee = new Employee; $employee->setName('john'); // método del padre, es decir, de la clase User $employee->setSalary(1000); // método propio, es decir, de la clase Employee echo $employee->getName(); // mostrará 'john' echo $employee->getSalary(); // mostrará 1000 ?>

Crea una clase abstracta Figure, que represente una figura geométrica. Que de ella hereden clases para el círculo, el rectángulo y el cuadrado.

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