Cita:
Iniciado por NTrance La clase que hereda la he puesto así:
Código PHP:
class B extends A {
function joke() {
parent::joke();
$this->x = 44;
print "B::joke " . $this->x . "<br>\n";
}
}
Hola
Ntrance!
Entonces quedaría así:
Código PHP:
class A {
var $x;
function A() {
$this->x = 32;
}
function joke() {
print "A::joke " . $this->x . "<br>\n";
}
}
class B extends A {
var $x;
function B() {
parent::A();
//$this->x = 44;
}
function joke() {
parent::joke();
$this->x = 44;
print "B::joke " . $this->x . "<br>\n";
}
}
}
$obj = new B();
$obj->joke();
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, mira:
Código PHP:
class A {
var $x;
function A() {
$this->x = 32;
}
function joke() {
print "A::joke " . $this->x . "<br>\n";
}
}
class B extends A {
var $x;
function B() {
parent::A();
//$this->x = 44;
}
function joke() {
parent::joke();
$this->x = 44;
//Aquí esta la llamada al método padre de nuevo...
parent::joke();
print "B::joke " . $this->x . "<br>\n";
}
}
}
$obj = new B();
$obj->joke();
Daría como resultado:
A::joke32
A::joke44
B::joke 44
Como puedes ver no puedo tener acceso al miembro padre sobreescrito en la clase hija.
Suerte!