Tema: Herencia
Ver Mensaje Individual
  #12 (permalink)  
Antiguo 07/07/2010, 06:50
kadas99
 
Fecha de Ingreso: julio-2009
Ubicación: Argentina!
Mensajes: 324
Antigüedad: 14 años, 9 meses
Puntos: 4
Respuesta: Herencia

muchas gracias, les muestro un ejemplo y luego abajo las dudas que se me vienen a la cabeza.


Código PHP:
<?php

class video{
private 
$numero;
private 
$titulo;
private 
$tipo;
private 
$clase;
    public function 
__construct($num,$tit,$tipo,$clase){
        
$this->numero=$num;
        
$this->titulo=$tit;
        
$this->tipo=$tipo;
        
$this->clase=$clase;
        
$this->mostrar();
    }
    
    protected function 
mostrar(){
    echo 
"Numero: ".$this->numero;
    echo 
"<br />Titulo: ".$this->titulo;
    echo 
"<br />Tipo: ".$this->tipo;
    echo 
"<br />Clase: ".$this->clase."<br /><br />";
    }
}

class 
pelicula extends video{
private 
$duracion;
    function 
__construct($num,$tit,$tipo,$clase,$duracion){
    
parent::__construct($num,$tit,$tipo,$clase);
    
$this->duracion=$duracion;        
    
$this->mostrar();
    }
    
    function 
mostrar(){
    
parent::mostrar();
    echo 
"<br >Duracion: ".$this->duracion;
    }

}


$video1=new video(1,"The Others""Pelicula""DVD""160 minutos");
$video2=new video(2,"Apocalipsis","Pelicula","DVD""160 minutos");
$video3=new video(3,"Lineage2""Juego""DVD");

?>
como veran, es una clase padre VIDEO en donde el constructor inicaliza los datos de numero, titulo, tipo y clase....
1era pregunta: ¿esta bien haber definido esas variables como private? ¿porque?

luego, la funcion mostrar solo muestra los datos contenidos en ellos una vez inicializados ya que el constructor llama a la funcion mostrar();.

Extiendo la clase (Heredo) para hacer diferencia en el TIPO de video que sea, (PELICULA, JUEGO), en este caso solo cree la clase PELICULA en donde la variable es $duracion (Tiempo de duracion de la pelicula).

la funcion construct inicializa los valores pasados de la clase padre y a su vez tambien inicializa $duracion. Luego, en la primera linea llamo al constructor de la clase padre para que inicialize los valores antes mencionados y luego hago $this->duracion=$duracion para darle el valor de $duracion a duracion. ¿Hasta aca todo esta bien?

y por ultimo (Aca se me complica mas!) quiero mostrar por unica vez todo incluyendo la duracion, en donde hice esto

Código PHP:
function mostrar(){
    
parent::mostrar();
    echo 
"<br >Duracion: ".$this->duracion;
    } 
que ya probe y no funciona asi que de seguro hice todo o casi todo mal!