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

  1. Clase Padre (Superclase): La clase de la cual se heredan propiedades y métodos.
  2. Clase Hija (Subclase): La clase que hereda propiedades y métodos de la clase padre.
  3. 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

  1. Clase Animal:

    • Tiene dos propiedades: $name y $age.
    • Tiene un constructor que inicializa estas propiedades.
    • Tiene dos métodos: eat() y sleep().
  2. Clase Dog:

    • Utiliza la palabra clave extends para heredar de la clase Animal.
    • Añade un nuevo método bark().
  3. Instanciación y Uso:

    • Se crea una instancia de la clase Dog llamada $dog.
    • Se llaman los métodos eat(), sleep() y bark() en la instancia $dog.

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

  1. Clase Cat:
    • Hereda de la clase Animal.
    • Sobrescribe el método sleep() para proporcionar una implementación específica para los gatos.

Ejercicio Práctico

Ejercicio

  1. Crea una clase Vehicle con las propiedades make y model, y un método start().
  2. Crea una clase Car que herede de Vehicle y añada un método drive().
  3. Crea una instancia de Car y llama a los métodos start() y drive().

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

Módulo 2: Estructuras de Control

Módulo 3: Funciones

Módulo 4: Arrays

Módulo 5: Trabajando con Formularios

Módulo 6: Trabajando con Archivos

Módulo 7: Programación Orientada a Objetos (POO)

Módulo 8: Trabajando con Bases de Datos

Módulo 9: Técnicas Avanzadas de PHP

Módulo 10: Frameworks de PHP y Mejores Prácticas

Módulo 11: Proyecto: Construyendo una Aplicación Web

© Copyright 2024. Todos los derechos reservados