Plantilla:PHP/Herencia
De WikiEducator
Revisión a fecha de 05:51 7 nov 2025; ManuelRomero (Discusión | contribuciones)
Herencia
- La herencia es un mecanismo de programación que permite crear una jerarquía en los componentes software, que se van especializando.
- Es un principio de abstracción mediante el cual podemos crear una jerarquía de clases, con una raíz que contiene los elementos comunes y nodos que representan clases especializadas.
- La idea es definir una clase con ciertas características comunes (atributos, métodos). Posteriormente, crearemos otras clases a partir de la ya existente, heredando implícitamente los atributos y métodos como parte de su estructura o composición.
- Es una característica muy natural. Por ejemplo:
- Personas → (Médicos, Bailarines) - Vehículos → (Terrestres → Coche, Moto) / (Acuáticos → Barco, Lancha)
- La herencia es una forma de obtener características comunes por separado y luego especializarlas, evitando redundancias.
- Facilita la reutilización y la adaptación del código.
- La herencia implica declarar jerarquías de clases
- En la raíz de la jerarquía establecemos la parte o estructura común a todas las clases, y posteriormente vamos especializando las diferencias de cada una.
|
- Para establecer una jerarquía, usamos la palabra reservada extends en las clases que heredan.
- Vamos a verlo con un ejemplo:
- Primero establecemos la clase Persona:
<?php class Persona { protected $nombre; protected $direccion; protected $edad; protected $frase; public function __construct(string $n, string $d, int $e){ $this->nombre = $n; $this->direccion = $d; $this->edad = $e; } public function establecer_frase(string $frase){ $this->frase = $frase; } public function hablar(){ echo $this->frase; } } ?>
- Ahora establecemos la clase que hereda de Persona:
|
<?php class Sanitario extends Persona { protected $centroSalud; protected $yearTitulacion; public function __construct(string $n, string $d, int $e, string $centro, int $year) { parent::__construct($n, $d, $e); $this->centroSalud = $centro; $this->yearTitulacion = $year; } public function mostrarInfo(){ echo "$this->nombre trabaja en $this->centroSalud y obtuvo su título en $this->yearTitulacion."; } } ?>
---
- Vemos dos ejemplos para explicar de forma práctica este concepto.
Herencia: gestión de personal en un ambulatorio
| |||
Las propiedades (atributos) y métodos de cada clase se representan en los siguientes diagramas:
El diagrama podría quedar así:
http://manuel.infenlaces.com/dwes/ejercicios/T6_Ambulatorio/
|
Clases Abstractas
- Cuando realizamos jerarquías, muchas veces encontramos métodos comunes a varias clases.
Esto implicaría que ese método debería pertenecer a una superclase (o clase padre), de la que luego se heredará.
- Pero puede ocurrir que, aunque el concepto del método sea común a todas las clases, la forma de implementarlo sea diferente en cada una.
Clase abstracta
| |
|
- En este caso, la forma correcta de proceder es especificar el método en la clase superior y dejar su implementación a las clases derivadas.
- El método especificado en la clase superior será un método sin código, conocido como método abstracto, y la clase donde se define pasa a ser una clase abstracta.
|
|
- Vamos a plantear un ejemplo práctico:


