07. Herencia y polimorfismo en PHP

Vemos un ejm completo para entender el concepto de herencia y polimorfismo, en el cual veremos clasesclases 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();
Scroll al inicio