Tema 14

Herencia y Modificadores de Acceso en PHP

Aprende a reutilizar código extendiendo clases con extends, y a proteger datos con los modificadores public, protected y private.

¿Qué es la Herencia en POO?

La herencia permite que una clase secundaria (o clase hija) herede todas las propiedades y métodos de una clase principal (o clase padre) mediante la palabra reservada extends. Esto evita duplicar código y modela jerarquías lógicas.

Los 3 Modificadores de Acceso (Encapsulamiento)

Modificador ¿Desde dónde es accesible? Uso Habitual
public Desde cualquier parte (dentro y fuera de la clase). Métodos que forman la interfaz pública del objeto.
protected Únicamente dentro de la propia clase y sus clases hijas. Propiedades que las clases heredadas necesitan personalizar.
private Exclusivamente dentro de la clase exacta donde se declaró. Datos internos sensibles que ninguna otra clase debe alterar directamente.

Invocación a la Clase Padre con parent::

Cuando una clase hija sobrescribe un método del padre pero desea conservar parte de su comportamiento original, utiliza parent::nombreMetodo().

⚡ Ejemplo de Herencia: Jerarquía de Miembros de Kilopolis

Clase base Usuario extendida por Alumno e Instructor con modificadores de visibilidad y parent::

index.html
Solo lectura
<!DOCTYPE html>
<html>
<body>

<h2>Herencia y Encapsulamiento en PHP 8.3</h2>

<?php
// 1. Clase Base (Padre)
class Usuario {
    public function __construct(
        public string $nombre,
        protected string $email,
        private string $claveHash
    ) {}

    public function getEmail(): string {
        return $this->email;
    }

    public function getRol(): string {
        return "Usuario General";
    }

    public function renderInfo(): string {
        return "<strong>{$this->nombre}</strong> ({$this->getEmail()}) - <em>{$this->getRol()}</em>";
    }
}

// 2. Clase Hija: Estudiante
class Estudiante extends Usuario {
    public function __construct(
        string $nombre,
        string $email,
        string $claveHash,
        public string $cohorte = "Bootcamp 2026-A"
    ) {
        // Llamada obligatoria al constructor padre
        parent::__construct($nombre, $email, $claveHash);
    }

    // Sobrescritura de método (Polimorfismo)
    public function getRol(): string {
        return "Estudiante Activo ({$this->cohorte})";
    }
}

// 3. Clase Hija: Instructor
class Instructor extends Usuario {
    public function __construct(
        string $nombre,
        string $email,
        string $claveHash,
        public array $materias = []
    ) {
        parent::__construct($nombre, $email, $claveHash);
    }

    public function getRol(): string {
        return "Instructor Especialista en " . implode(", ", $this->materias);
    }
}

// 4. Instanciación y prueba
$estudiante = new Estudiante(
    "Ana Isabel Montaño", 
    "[email protected]", 
    "hash_secreto_123", 
    "Fullstack Cohorte 4"
);

$instructor = new Instructor(
    "Prof. David Amador", 
    "[email protected]", 
    "hash_docente_999", 
    ["PHP 8.3", "Arquitectura Web", "MySQL"]
);

echo "<p style='color:#2563eb;'>1. " . $estudiante->renderInfo() . "</p>";
echo "<p style='color:#059669;'>2. " . $instructor->renderInfo() . "</p>";

// Intentar acceder a una propiedad private desde fuera generaría un error fatal:
// echo $estudiante->claveHash; // ❌ Error: Cannot access private property
?>

</body>
</html>
Pruébalo tú mismo » Se abre en una nueva pestaña con ejecución en vivo
🦉
¿Tienes dudas con este tema?
Sócrates AI puede darte analogías y explicarte este código paso a paso.

🚀 ¿Quieres dominar Manual Completo de PHP y crear proyectos reales?

Aprende arquitectura limpia, desarrollo web moderno, buenas prácticas y despliegue en producción con nuestro Bootcamp Fullstack Developer con mentorías en vivo.

🏛️ Autoría y Propiedad Intelectual: Obra educativa original de David Amador para Kilopolis Academia (Solucionáticos), estructurada sobre las especificaciones y estándares abiertos del W3C, el estándar vivo de WHATWG y la documentación oficial de código abierto. © Todos los derechos reservados.