Extensión de clases mediante herencia
Utilice extends para crear jerarquías de clases y sobrescribir métodos.
Extensión de clases mediante herencia es una lección gratuita de PHP Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de PHP Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de PHP Academy incluye 4 lecciones en total.
Introducción: herencia en PHP
La herencia permite que una clase (hija) reutilice y amplíe el código de otra clase (padre) mediante la palabra clave extends. PHP admite la herencia simple.
Conceptos clave
Conceptos clave:
- La clase hija hereda todos los miembros públicos y protegidos
- Reemplace los métodos de la clase padre para cambiar el comportamiento
- Llame al método de la clase padre con
parent:: - Use
finalpara impedir que se reemplacen métodos
Uso básico de extends
Ejemplo:
<?php
class Shape {
public function __construct(protected string $color) {}
public function describe(): string { return "A {$this->color} shape"; }
}
class Circle extends Shape {
public function __construct(string $color, private float $radius) {
parent::__construct($color);
}
public function area(): float { return M_PI * $this->radius ** 2; }
}
$c = new Circle('red', 5);
echo $c->describe(); // A red shape
echo round($c->area()); // 79Sobrescritura de métodos
Continuación:
<?php
class Logger {
public function log(string $msg): void {
echo "[LOG] $msg" . PHP_EOL;
}
}
class DatabaseLogger extends Logger {
public function log(string $msg): void {
// Extend parent behavior
parent::log($msg);
// Also save to DB
echo "[DB] Saved: $msg" . PHP_EOL;
}
}
$l = new DatabaseLogger();
$l->log('User login');Palabra clave final
Más información:
<?php
class PaymentProcessor {
final public function processPayment(float $amount): void {
// Critical logic — cannot be overridden
$this->validate($amount);
$this->charge($amount);
$this->log($amount);
}
protected function validate(float $amount): void { /* ... */ }
protected function charge(float $amount): void { /* ... */ }
protected function log(float $amount): void { /* ... */ }
}Comprobación con instanceof
Uso práctico:
<?php
class Vehicle {}
class Car extends Vehicle {}
class ElectricCar extends Car {}
$ev = new ElectricCar();
var_dump($ev instanceof ElectricCar); // true
var_dump($ev instanceof Car); // true
var_dump($ev instanceof Vehicle); // true
// Also works with interfaces
var_dump($ev instanceof Countable); // falseClase base abstracta
Avanzado:
<?php
abstract class Notification {
abstract public function send(string $message): bool;
public function sendBatch(array $messages): void {
foreach ($messages as $msg) {
$this->send($msg);
}
}
}
class EmailNotification extends Notification {
public function send(string $message): bool {
echo "Email: $message" . PHP_EOL;
return true;
}
}Patrón
Los patrones comunes de herencia en PHP se utilizan para resolver de forma clara problemas de diseño recurrentes. Aplíquelos de manera coherente para obtener un código legible y fácil de mantener.
Cuándo utilizarla
Saber cuándo aplicar la herencia en PHP es tan importante como saber cómo hacerlo. El uso excesivo genera complejidad; el uso insuficiente genera duplicación.
Ejemplo del mundo real
En las aplicaciones reales, la herencia en PHP aparece con frecuencia en frameworks, ORM y capas de servicios. Comprenderla le prepara para contribuir a proyectos profesionales de PHP.
Errores comunes
Evite estos errores al trabajar con la herencia en PHP:
- Llame siempre a parent::__construct() para inicializar el estado de la clase padre
- No reemplace métodos solo para llamar a la clase padre sin realizar cambios
- Use final en los métodos críticos para la seguridad
- Prefiera la composición a las jerarquías de herencia profundas
Comprobación rápida
¿Qué palabra clave impide que se reemplace un método en una subclase?
Repaso: herencia en PHP
Resumen:
- Llame siempre a parent::__construct() para inicializar el estado de la clase padre
- No reemplace métodos solo para llamar a la clase padre sin realizar cambios
- Use final en los métodos críticos para la seguridad
- Prefiera la composición a las jerarquías de herencia profundas
Preguntas frecuentes
¿La lección «Extensión de clases mediante herencia» es gratis?
Sí — el texto completo de «Extensión de clases mediante herencia» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de PHP Academy, actualiza a CoddyKit PRO. El curso de PHP Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Extensión de clases mediante herencia»?
Utilice extends para crear jerarquías de clases y sobrescribir métodos. Practicas PHP Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar PHP Academy?
No se requiere experiencia previa. PHP Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.
¿Cuánto tiempo toma la lección «Extensión de clases mediante herencia»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de PHP Academy?
Sí. Cada lección de PHP Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Extensión de clases mediante herencia
- Clases y métodos abstractos
- Implementación de interfaces
- Traits para reutilizar código