Clases abstractas en PHP


Lección 20 / 24

Clases abstractas en PHP

Php Desarrollador Php Curso php

¿Cansad@? ¡Espera! ¡Nuestras lecciones de php aún no han terminado!
En este artículo, estamos hablando de un tipo particular de clase php: clases abstractas.

Una clase abstracta es una clase que cuenta con al menos un método abstracto.

Los métodos abstractos solo pueden tener nombres y argumentos. Por lo tanto, no podemos crear objetos a partir de clases abstractas. ¿Cómo superar este obstáculo? Simple: tendremos que crear clases secundarias que agreguen código en los cuerpos de los métodos y usar estas mismas clases secundarias para crear objetos.
Veámoslo un poco mejor, bajando al lado práctico.

Una de las primeras cosas que debemos hacer es configurar la clase Person con una generalización (función abstracta).

class Persona {

    public $name;
    public $surname;
    public $age;

    public function __construct($name, $surname, $age) {

        $this->name = $name;
        $this->surname = $surname;
        $this->age = $age;
    }

    abstract function presentate();
}

La función presentate () en la clase Persona indica que se pueden presentar todas las clases que extiendan la clase Persona. Sin embargo, cada subclase puede hacerlo de manera diferente, explicando cómo. Tomando como ejemplo las clases creadas en el artículo anterior, el profesor se presentará:

class Docente extends Persona {

    public $salary;
    public $subjects = [];

    public function __construct($name , $surname, $age, $subjects, $salary){

        parent::__construct($name, $surname, $age);
        $this->salary = $salary;
        $this->subjects = $subjects;
    }

    public function presentate(){
       echo "Hola, soy $this->nombre y soy un Docente";
    }
}

Mientras el estudiante:

class Estudiante extends Persona {

    public $average;
    public $subjects = [];

    public function __construct($name , $surname, $age, $subjects, $average){

        parent::__construct($name, $surname, $age);
        $this->average = $average;
        $this->subjects = $subjects;
    }

    public function presentate(){
       echo "Hola, soy $this->nombre y soy un Estudiante";
    }
}

Ahora que hemos construido las clases, veamos los resultados finales:

$docente = new Docente("Mario" , "Rossi");

$docente->presentate();

//Hola, soy Mario y soy un Docente


$estudiante = new Studente("Giorgio" , "Verdi");

$estudiante->presentate();

//Hola, soy Giorgio y soy un estudiante

Al concluir nuestro primer encuentro con el concepto de abstracción, ahora sabemos que nos permite vincular clases secundarias a nombres de métodos y no a cuerpos de métodos.

© 2022 Aulab. Todos los derechos reservados • P.IVA: IT07647440721 • Política de privacidad