El ejemplo en cuestión es el siguiente.
Código PHP:
<?php
class MyClass
{
public function myFunc() {
echo "Vengo del objeto padre <br>";
echo "MyClass::myFunc() <br>";
}
public function noSobreescrita() {
echo "vengo del padre, pero no estoy sobreescrita";
}
}
class OtherClass extends MyClass
{
// Sobrescritura de definición parent
public function myFunc()
{
// Pero todavía se puede llamar a la función parent
echo"---------------------------------------------------<br>";
echo "Vengo del objeto hijo <br>";
echo "OtherClass::myFunc() <br>";
parent::myFunc();
}
}
$objetoPadre = new MyClass();
$objetoPadre->myFunc();
$objetoHijo = new OtherClass();
$objetoHijo->myFunc();
$objetoHijo->noSobreescrita();
?>
Ademas también pretendo mostrar que podemos sobreescribir funciones en la clase hijo y a su vez utilizar las funciones del padre que lleven el mismo nombre, y que para esto utilizaremos parent::
Si ejecuto el codigo tal y como esta ahora. me funciona perfectamente. pero si hago que la función noSobreescrita sea protected , no funciona.
No entiendo por que, me da un error.
Empezando con la programacion orientada a objetos en php, pero pensaba que tenia estos conceptos bastante claros (ya vi POO en java) hasta que tope con este problema.