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!