La herencia es uno de los pilares fundamentales de la Programación Orientada a Objetos (POO). Permite que una clase (llamada clase hija o subclase) herede propiedades y métodos de otra clase (llamada clase padre o superclase). Esto promueve la reutilización del código y facilita la creación de estructuras más complejas y organizadas.
Conceptos Clave
- Clase Padre (Superclase): La clase de la cual se heredan propiedades y métodos.
- Clase Hija (Subclase): La clase que hereda propiedades y métodos de la clase padre.
- Palabra Clave
extends
: Utilizada para indicar que una clase hereda de otra.
Ejemplo Básico de Herencia
Vamos a crear un ejemplo simple para ilustrar cómo funciona la herencia en PHP.
Clase Padre
<?php class Animal { public $name; public $age; public function __construct($name, $age) { $this->name = $name; $this->age = $age; } public function eat() { echo $this->name . " is eating.\n"; } public function sleep() { echo $this->name . " is sleeping.\n"; } } ?>
Clase Hija
<?php class Dog extends Animal { public function bark() { echo $this->name . " is barking.\n"; } } // Crear una instancia de la clase Dog $dog = new Dog("Buddy", 3); $dog->eat(); // Buddy is eating. $dog->sleep(); // Buddy is sleeping. $dog->bark(); // Buddy is barking. ?>
Explicación del Código
-
Clase
Animal
:- Tiene dos propiedades:
$name
y$age
. - Tiene un constructor que inicializa estas propiedades.
- Tiene dos métodos:
eat()
ysleep()
.
- Tiene dos propiedades:
-
Clase
Dog
:- Utiliza la palabra clave
extends
para heredar de la claseAnimal
. - Añade un nuevo método
bark()
.
- Utiliza la palabra clave
-
Instanciación y Uso:
- Se crea una instancia de la clase
Dog
llamada$dog
. - Se llaman los métodos
eat()
,sleep()
ybark()
en la instancia$dog
.
- Se crea una instancia de la clase
Sobrescritura de Métodos
La herencia también permite sobrescribir métodos de la clase padre en la clase hija. Esto se hace simplemente definiendo un método en la clase hija con el mismo nombre que en la clase padre.
Ejemplo de Sobrescritura
<?php class Cat extends Animal { public function sleep() { echo $this->name . " is sleeping in a cozy spot.\n"; } } // Crear una instancia de la clase Cat $cat = new Cat("Whiskers", 2); $cat->eat(); // Whiskers is eating. $cat->sleep(); // Whiskers is sleeping in a cozy spot. ?>
Explicación del Código
- Clase
Cat
:- Hereda de la clase
Animal
. - Sobrescribe el método
sleep()
para proporcionar una implementación específica para los gatos.
- Hereda de la clase
Ejercicio Práctico
Ejercicio
- Crea una clase
Vehicle
con las propiedadesmake
ymodel
, y un métodostart()
. - Crea una clase
Car
que herede deVehicle
y añada un métododrive()
. - Crea una instancia de
Car
y llama a los métodosstart()
ydrive()
.
Solución
<?php class Vehicle { public $make; public $model; public function __construct($make, $model) { $this->make = $make; $this->model = $model; } public function start() { echo $this->make . " " . $this->model . " is starting.\n"; } } class Car extends Vehicle { public function drive() { echo $this->make . " " . $this->model . " is driving.\n"; } } // Crear una instancia de la clase Car $car = new Car("Toyota", "Corolla"); $car->start(); // Toyota Corolla is starting. $car->drive(); // Toyota Corolla is driving. ?>
Resumen
En esta sección, hemos aprendido sobre la herencia en PHP, un concepto clave en la Programación Orientada a Objetos. Hemos visto cómo una clase hija puede heredar propiedades y métodos de una clase padre, y cómo podemos sobrescribir métodos para proporcionar implementaciones específicas. La herencia nos permite reutilizar código y crear estructuras más organizadas y mantenibles.
En el próximo tema, exploraremos Interfaces y Clases Abstractas, que nos permitirán definir contratos y estructuras más flexibles en nuestras aplicaciones PHP.
Curso de Programación en PHP
Módulo 1: Introducción a PHP
- ¿Qué es PHP?
- Configuración del Entorno de Desarrollo
- Tu Primer Script en PHP
- Sintaxis y Variables en PHP
- Tipos de Datos en PHP
Módulo 2: Estructuras de Control
Módulo 3: Funciones
- Definiendo y Llamando Funciones
- Parámetros de Función y Valores de Retorno
- Ámbito de Variables
- Funciones Anónimas y Closures
Módulo 4: Arrays
Módulo 5: Trabajando con Formularios
- Manejo de Datos de Formularios
- Validación de Formularios
- Subida de Archivos
- Seguridad en Formularios
Módulo 6: Trabajando con Archivos
- Lectura y Escritura de Archivos
- Funciones de Manejo de Archivos
- Permisos de Archivos
- Funciones de Directorio
Módulo 7: Programación Orientada a Objetos (POO)
- Introducción a la POO
- Clases y Objetos
- Propiedades y Métodos
- Herencia
- Interfaces y Clases Abstractas
- Traits
Módulo 8: Trabajando con Bases de Datos
- Introducción a las Bases de Datos
- Conectando a una Base de Datos MySQL
- Realizando Operaciones CRUD
- Usando PDO para la Interacción con la Base de Datos
- Seguridad en Bases de Datos
Módulo 9: Técnicas Avanzadas de PHP
- Manejo de Errores y Excepciones
- Sesiones y Cookies
- Expresiones Regulares
- Trabajando con JSON y XML
- PHP y Servicios Web
Módulo 10: Frameworks de PHP y Mejores Prácticas
- Introducción a los Frameworks de PHP
- Empezando con Laravel
- Arquitectura MVC
- Mejores Prácticas en el Desarrollo de PHP
- Pruebas y Depuración