Ver Mensaje Individual
  #8 (permalink)  
Antiguo 22/08/2006, 20:56
zaqpz
 
Fecha de Ingreso: agosto-2005
Ubicación: Argentina, Capital Federal
Mensajes: 435
Antigüedad: 18 años, 9 meses
Puntos: 2
Tal como dice Jucem, fijate en esta línea dentro de ConcreteClass1:
Código PHP:
public function prefixValues($prefix) { 
El método que definitste en la clase abstracta es prefixValue y no prefixValues. Al encontrar un método abstracto de la clase padre que no era redefinido en la clase hija se te obligaba a declarar la clase ConcreteClass1 también como abstracta.

Tu código queda así:
Código PHP:
<?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 
prefixValue($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"
?>
Saludos.
__________________
R4DS en español | R4DS en inglés