PHP 5 introduce clases y m茅todos abstractos. No es permitido
crear una instancia de una clase que ha sido definida como abstracta.
Cualquier clase que contenga por lo menos un m茅todo abstracto
debe tambi茅n ser abstracta. Los m茅todos definidos como
abstractos simplemente declaran el m茅todo, no pueden definir la
implementaci贸n
Cuando se hereda desde una clase abstracta, todos los metodos marcados
como abstractos en la declaraci贸n de la clase padre, deben de
ser definidos por la clase hijo; adicionalmente, estos metodos se deben
definir con la misma o menor
visibilidad.
Si el m茅todo abstracto es definido como protected,
la implementaci贸 de la funci贸n debe ser definida como
protected o public.
Ejemplo 19-16. Ejemplos de la clase Abstract
<?php abstract class AbstractClass { // Force Extending class to define this method abstract protected function getValue(); abstract protected function prefixValue($prefix);
// Common method public function printOut() { print $this->getValue() . "\n"; } }
class ConcreteClass1 extends AbstractClass { protected function getValue() { return "ConcreteClass1"; } public function prefixValues($prefix) { return "{$prefix}ConcreteClass1"; } }
class ConcreteClass2 extends AbstractClass { protected 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 seria: ConcreteClass1
FOO_ConcreteClass1
ConcreteClass2
FOO_ConcreteClass2 |
|
El co贸digo anterior que no ten铆a clases definidas por el
usuario o funciones llamadas 'abstractas' puede correr sin necesidad
de modificaci贸n.