Ver Mensaje Individual
  #6 (permalink)  
Antiguo 23/01/2006, 11:44
gnfrs
 
Fecha de Ingreso: abril-2004
Ubicación: Rosario, Argentina
Mensajes: 124
Antigüedad: 20 años, 1 mes
Puntos: 11
El problema que tienen es sencillo, es una confusión de HERENCIA en PHP (yo lo llamaría así).

En PHP herencia implica que se heredan propiedades y métodos. Ahora bien, si sobreescribimos un método de una clase base en una clase derivada, necesitamos el operando parent para acceder a dicho método de la clase base, pero esto no sucede con una propiedad.
Al sobreescribir la propiedad, no tenemos 2 propiedades que se llaman igual (una en cada clase), más bien ambas propiedades apuntan a la misma posición de memoria, entonces:

Si la clase B modifica a la variable x, se va a modificar el valor de la variable x en la clase A, por lo tanto el método joke() de la clase A utiliza el valor de su propiedad x que fue modificada por la clase derivada B.

Cita:
Pero eso no creo que resuelva el problema porque primero llamas el método padre mucho antes de definir la propiedad hija, dando como resultado el valor 32, pero por ejemplo si vuelvo a llamar al método padre justo después de definir la propiedad hija sale el mismo resultado
ERROR !!! Las dos clases están accediendo a la misma variable no a distintas variables, es por eso que después de modificar el valor de la propiedad en la clase B la clase A refleja el mismo resultado.