Listo (Ctrl + Enter para ejecutar) Bootcamp Fullstack »
ejemplo.php
Tab = 4 espacios
1
<?php
declare(strict_types=1);

// 1. Superclase Padre
class Vehiculo
{
    public function __construct(
        protected string $marca,
        protected string $modelo,
        protected int $anio,
        protected int $velocidad = 0
    ) {}

    public function acelerar(int $kmh): void
    {
        $this->velocidad += $kmh;
        echo "<p style='color:#0284c7;'>🏎️ {$this->marca} {$this->modelo} aceleró a {$this->velocidad} km/h.</p>";
    }

    public function frenar(): void
    {
        $this->velocidad = 0;
        echo "<p style='color:#ef4444;'>🛑 {$this->marca} {$this->modelo} se ha detenido por completo.</p>";
    }

    public function getDescripcion(): string
    {
        return "{$this->marca} {$this->modelo} ({$this->anio})";
    }
}

// 2. Subclase Hija con Especialización
final class AutoElectrico extends Vehiculo
{
    public function __construct(
        string $marca,
        string $modelo,
        int $anio,
        private int $porcentajeBateria = 100 // Propiedad exclusiva del auto eléctrico
    ) {
        // Invocar el constructor del padre
        parent::__construct($marca, $modelo, $anio);
    }

    // Método exclusivo de la hija
    public function cargarBateria(int $porcentaje): void
    {
        $this->porcentajeBateria = min(100, $this->porcentajeBateria + $porcentaje);
        echo "<p style='color:#10b981;'>⚡ Batería cargada al {$this->porcentajeBateria}%.</p>";
    }

    // Sobrescritura de método (Override)
    public function getDescripcion(): string
    {
        return parent::getDescripcion() . " [100% Eléctrico - Batería: {$this->porcentajeBateria}%]";
    }
}

// ==========================================
// PRUEBA DE HERENCIA EN VIVO
// ==========================================
$autoGasolina = new Vehiculo("Toyota", "Corolla", 2022);
$tesla = new AutoElectrico("Tesla", "Model 3", 2024, 75);

echo "<h3>1. Vehículo Estándar:</h3>";
echo "<p>" . $autoGasolina->getDescripcion() . "</p>";
$autoGasolina->acelerar(60);

echo "<h3>2. Auto Eléctrico (Hereda acelerar y agrega batería):</h3>";
echo "<p>" . $tesla->getDescripcion() . "</p>";
$tesla->acelerar(90); // Método heredado del padre
$tesla->cargarBateria(25); // Método propio especializado
Haz clic para editar este código
Vista Previa
Servidor PHP 8.3