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.
 


