Clases y Objetos
PHP Manual

Abstracción de clases

PHP 5 introduce clases y métodos abstractos. No se permite crear una instancia de una clase que haya sido definida como abstracta. Cualquier clase que contenga al menos un método abstracto también debe ser abstracta. Los métodos definidos como abstract simplemente declaran la estructura del método, pero no pueden definir la implementación.

Cuando se hereda de una clase abstracta, todos los métodos definidos como abstract en la definición de la clase parent deben ser redefinidos en la clase child; adicionalmente, estos métodos deben ser definidos con la misma visibilidad (o con una menos restrictiva). Por ejemplo, si el método abstracto está definido como protected, la implementación de la función puede ser redefinida como protected o public, pero nunca como private.

Example #1 Ejemplo de clase abstracta

<?php
abstract class AbstractClass
{
    
// Forzando la extensión de clase para definir este método
    
abstract protected function getValue();
    abstract protected function 
prefixValue($prefix);

    
// Método común
    
public function printOut() {
        print 
$this->getValue() . "\n";
    }
}

class 
ConcreteClass1 extends AbstractClass
{
    protected function 
getValue() {
        return 
"ConcreteClass1";
    }

    public function 
prefixValue($prefix) {
        return 
"{$prefix}ConcreteClass1";
    }
}

class 
ConcreteClass2 extends AbstractClass
{
    public function 
getValue() {
        return 
"ConcreteClass2";
    }

    public function 
prefixValue($prefix) {
        return 
"{$prefix}ConcreteClass2";
    }
}

$class1 = new ConcreteClass1;
$class1->printOut();
echo 
$class1->prefixValue('FOO_') ."\n";

$class2 = new ConcreteClass2;
$class2->printOut();
echo 
$class2->prefixValue('FOO_') ."\n";
?>

El resultado del ejemplo sería:

ConcreteClass1
FOO_ConcreteClass1
ConcreteClass2
FOO_ConcreteClass2

Códigos antiguos que no tengan clases o funciones definidas por el usuario llamadas 'abstract' deberían ejecutarse sin modificaciones.


Clases y Objetos
PHP Manual