Vemos un ejm completo para entender el concepto de herencia y polimorfismo, en el cual veremos clases, clases hijas que heredan de la clase padre y clases finales.
Ejm
<?php
class Telefono {
public $marca;
public $modelo;
protected $alambrico = true;
protected $comunicacion;
public function __construct($marca, $modelo) {
$this->marca = $marca;
$this->modelo = $modelo;
$this->comunicacion = ($this->alambrico) ? 'Alámbrica' : 'Inalámbrica';
}
public function llamar() {
return print('<p>Ring ring</p>');
}
public function mas_info() {
return print('<ul>
<li>Marca: <b>' . $this->marca . '</b></li>
<li>Modelo: <b>' . $this->modelo . '</b></li>
<li>Comunicación: <b>' . $this->comunicacion . '</b></li>
</ul>');
}
}
class Celular extends Telefono {
protected $alambrico = false;
public function __construct($marca, $modelo) {
parent::__construct($marca, $modelo);
}
}
final class SmartPhone extends Celular {
public $alambrico = false;
public $internet = true;
public function __construct($marca, $modelo) {
parent::__construct($marca, $modelo);
}
public function mas_info() {
return print('<ul>
<li>Marca: <b>' . $this->marca . '</b></li>
<li>Modelo: <b>' . $this->modelo . '</b></li>
<li>Comunicación: <b>' . $this->comunicacion . '</b></li>
<li>Dispositivo con acceso a Internet</li>
</ul>');
}
}
// HACIENDO PRUEBAS EN LA CLASE Telefono
echo '<h1>Evolución del tlfo</h1>';
echo '<h2>Teléfono</h2>';
$tel_casa = new Telefono('Panasonic','KX-TS550');
$tel_casa->llamar();
$tel_casa->mas_info();
// HACIENDO PRUEBAS CON LA CLASE Celular
echo '<h2>Celular</h2>';
$mi_cel = new Celular('Nokia','5120');
$mi_cel->llamar();
$mi_cel->mas_info();
// HACIENDO PRUEBAS CON LA CLASE Smartphone
echo '<h2>Smartphone</h2>';
$mi_smartphone = new Smartphone('Iphone','12');
$mi_smartphone->llamar();
$mi_smartphone->mas_info();
