Ver Mensaje Individual
  #1 (permalink)  
Antiguo 18/01/2013, 13:35
amadeo123
 
Fecha de Ingreso: diciembre-2011
Mensajes: 134
Antigüedad: 12 años, 10 meses
Puntos: 5
PHP POO. Herencia. Problema con método protected de una clase padre.

Estoy creando un pequeño ejemplo para mostrar y dejar claro el funcionamiento de la herencia en PHP.

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();
?>
Únicamente pretendo mostrar que todas las funciones que sean Public o Protected del padre, serán atribuibles al hijo. O sea, que todas las funciones disponibles de la clase padre estan disponibles en la clase hijo.

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.