HOWTO · PHP

Clase abstracta de PHP

Este tutorial demuestra cómo crear y usar clases abstractas en PHP.

En esta página

Las clases abstractas son clases con al menos un método abstracto. Este tutorial demuestra cómo crear y usar clases abstractas en PHP.

Clase abstracta de PHP

En PHP, las clases abstractas se declaran utilizando la palabra clave abstract, a diferencia de C++. La clase abstracta debe contener al menos un método abstracto sin ningún código real; este método solo tiene el nombre y los parámetros declarados con la palabra clave abstract.

El propósito de una clase abstracta es proporcionar el tipo de plantilla para heredar y obligar a la clase heredera a implementar los métodos abstractos. La clase abstracta es algo entre la interfaz pura y una clase regular.

La interfaz también puede ser un caso especial de clases abstractas donde cada método es abstracto. La clase abstracta nunca se puede instanciar, y si alguna clase contiene un método abstracto, esa clase debe ser abstracta.

La sintaxis de la clase abstracta es:

<?php
abstract class Demo
{
   abstract function Method_Name(Parameters);
}
?>

Esta sintaxis crea una clase abstracta con el método abstracto Method_Name.

Probemos un ejemplo para una clase abstracta en PHP:

<?php
// Parent abstract class
abstract class Employee {
    public $Employee_Name;
    public function __construct($Employee_Name) {
        $this->name = $Employee_Name;
    }
    abstract public function intro() : string;
}

// Child classes
class Jack extends Employee {
    public function intro() : string {
        return "Hello I am Project Manager at Delftstack! My Name is $this->name!";
    }
}

class Michelle extends Employee {
    public function intro() : string {
        return "Hi I am Human Resource Manager at Delftstack! My Name is $this->name!";
    }
}

class John extends Employee {
    public function intro() : string {
        return "Hey I am a Senior Developer at Delftstack! My Name is $this->name!";
    }
}

// Create objects from the child classes of abstract class
$Jack = new Jack("Jack");
echo $Jack->intro();
echo "<br>";

$Michelle = new Michelle("Michelle");
echo $Michelle->intro();
echo "<br>";

$John = new John("John");
echo $John->intro();
?>

Jack, Michelle y John se heredan de la clase abstracta Employee, lo que significa que pueden usar la propiedad pública Employee_Name y el método público __construct de la clase abstracta Employee solo por la herencia. Pero intro() es el método abstracto por eso se define en todas las clases.

Ver salida para el código:

Hello I am Project Manager at Delftstack! My Name is Jack!
Hi I am Human Resource Manager at Delftstack! My Name is Michelle!
Hey I am a Senior Developer at Delftstack! My Name is John!