Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

[SOLUCIONADO] PHP OO duda en metodos heredados

Estas en el tema de duda en metodos heredados en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Estoy leyendo sobre las herencias, y queria practicar, mi problema es que el codigo no me funciona y la verdad no entiendo por que. Código ...
  #1 (permalink)  
Antiguo 12/03/2013, 20:11
 
Fecha de Ingreso: enero-2013
Ubicación: Santa Fe, VT
Mensajes: 68
Antigüedad: 11 años, 3 meses
Puntos: 2
duda en metodos heredados

Estoy leyendo sobre las herencias, y queria practicar, mi problema es que el codigo no me funciona y la verdad no entiendo por que.

Código PHP:
class Empleado{
    
    private 
$dinero;

    
    
    
    public function 
get_dinero(){
        return 
$this->dinero;
    }
     
}

class 
Gerente extends Empleado{
    
    function 
__construct(){
        
$this->dinero=20000;
    }

al crear un nuevoobjeto Gerente, supuestamente hereda todas sus propiedades y metodos:

Código PHP:
$marcelo= new Gerente(); 
pero cuando intento llamar al metodo get_dinero, este no me devuelve nada:
Código PHP:
echo $marcelo->get_dinero(); 
  #2 (permalink)  
Antiguo 12/03/2013, 21:03
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: duda en metodos heredados

la propiedad dinero es private por lo que la misma no es heredada, para que pueda ser heredada debe de ser protected o public
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #3 (permalink)  
Antiguo 12/03/2013, 21:31
Avatar de zreep  
Fecha de Ingreso: octubre-2009
Ubicación: Argentina
Mensajes: 534
Antigüedad: 14 años, 6 meses
Puntos: 12
Respuesta: duda en metodos heredados

Carlos tiene razon, tienes que declararlas publicas y debe ser tambien protected, pero el sugundo nunca lo use... te dejo un ejemplo...


Código PHP:
class Persona {
    public 
$nombre;
    public 
$apellido;
    
    function 
verDatos(){
        
$valor sprintf('%s, %s',$this->apellido$this->nombre);
        return 
$valor;
    }
}


class 
Alumno extends Persona {
    public 
$nota;
    
    function 
verDatos(){
        
$valor parent::verDatos();
        return 
$valor.' '.$this->nota;
    }
}

$o = new Alumno();
$o -> nombre    'Lucas';
$o -> apellido  'Garcia';
$o -> nota      7;

echo 
$o->verDatos(),'</br>'
Espero te ayude, saludos
__________________
Zreep
  #4 (permalink)  
Antiguo 13/03/2013, 08:29
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: duda en metodos heredados

http://php.net/manual/es/language.oop5.visibility.php ahí está la referencia de las visibilidades, verifica cual se ajusta mas a lo que deseas, saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #5 (permalink)  
Antiguo 25/03/2013, 14:16
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 15 años, 9 meses
Puntos: 165
Respuesta: duda en metodos heredados

El uso de public, private o protected, no es solo porque me va o me deja de ir, tiene un sentido más profundo. Cuando creas un método o propiedad protegida, haces que no sea accesible desde fuera de la clase pero si desde dentro y desde las clases que heredan de esta.

Un saludo!
__________________
Gracias por el Karma :D

empleo ofertas de trabajo

Etiquetas: herencia, php, poo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:15.