⊗ppOpFnMt 64 of 107 menu

Métodos abstractos en POO en PHP

Las clases abstractas también pueden contener métodos abstractos. Dichos métodos no deben tener implementación, sino que son necesarios para indicar que tales métodos deben estar en las clases hijas. Y propiamente la implementación de tales métodos es tarea de las clases hijas.

Para declarar un método como abstracto, en su declaración se debe escribir la palabra clave abstract.

Probemos en la práctica. Supongamos que se espera que todas las clases hijas de la clase User deben tener el método increaseRevenue.

Este método debe tomar los ingresos actuales del usuario y aumentarlos en cierta cantidad, pasada como parámetro.

La propia clase User no sabe exactamente qué ingresos tendrá la clase hija - después de todo, para un empleado es un salario, y para un estudiante - una beca. Por lo tanto, cada clase hija implementará este método a su manera.

La esencia aquí es que el método abstracto de la clase User obliga al programador a implementar este método en las clases hijas, de lo contrario PHP mostrará un error. De esta manera, usted, u otro programador, que trabaje con su código, no podrá de ninguna manera olvidarse de implementar el método necesario en la clase hija.

Entonces, probemos en la práctica. Añadamos el método abstracto increaseRevenue a la clase User:

<?php abstract class User { private $name; public function getName() { return $this->name; } public function setName($name) { $this->name = $name; } // Método abstracto sin cuerpo: abstract public function increaseRevenue($value); } ?>

Dejemos que nuestra clase Employee permanezca por ahora sin cambios. En este caso, incluso si no se crea un objeto de la clase Employee, sino simplemente se ejecuta el código donde se definen nuestras clases, - PHP mostrará un error.

Escribamos ahora la implementación del método increaseRevenue en la clase Employee:

<?php class Employee extends User { private $salary; public function getSalary() { return $this->salary; } public function setSalary($salary) { $this->salary = $salary; } // Escribamos la implementación del método: public function increaseRevenue($value) { $this->salary = $this->salary + $value; } } ?>

Comprobemos el funcionamiento de nuestra clase:

<?php $employee = new Employee; $employee->setName('john'); $employee->setSalary(1000); $employee->increaseRevenue(100); echo $employee->getSalary(); ?>

Implementemos el método increaseRevenue también en la clase Student. Solo que ahora nuestro método aumentará la beca:

<?php class Student extends User { private $scholarship; // beca public function getScholarship() { return $this->scholarship; } public function setScholarship($scholarship) { $this->scholarship = $scholarship; } // El método aumenta la beca: public function increaseRevenue($value) { $this->scholarship = $this->scholarship + $value; } } ?>

Añade a tu clase User el mismo método abstracto increaseRevenue. Escribe la implementación de este método en las clases Employee y Student.

En la clase Figure crea métodos abstractos para obtener el área y el perímetro de la figura.

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