Que tal, gracias a B** y a GatorV, necesito sobreescribir este metodo y no se como hacerlo 
public function Persona($id, $nombre, $apellido, $color){ , lo he cambiado por 
public function __construct($id, $nombre, $apellido, $color){ y otro 
public function __construct(){, esto lo necesito por que la primera vez que inicializo un objeto de tipo Persona tengo que hacerlo asi 
$persona = new Persona("", "Jose", "Quintero", "Verde") y cuando hago una consulta quiero crear un nuevo objeto Persona seteandole los valores que traigo de la consulta a la bd y resulta que no me setea los valores sino que me muestra lo que yo habia seteado al inicio, no se si me explique bien. el Metodo buscar tambien lo he cambiado un poco a quedado asi 
 Código PHP:
    public function buscar()
    {
        $sql = "SELECT * FROM persons where id=".$this->getId();
        $sql= mysql_query($sql);
        if (mysql_num_fields($sql)!="0")
        {
            list($id, $nombre, $apellido, $color) = mysql_fetch_array($sql);
            $persona = new Persona($id, $nombre, $apellido, $color);
            $persona->setNombre($nombre);
            $persona->setApellido($apellido);
            $persona->setColor($color);
            return $persona;
        }
    } 
    
   Esto con el fin de cuando haga el retorno de la función me devuelva un objeto para poder trabajar con el. Espero me puedan ayudar... Saludos