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();