Herencia | OOP

↑ Me gusta (1)

Esto es probable que lo hayas escuchado como jerarquía, ese termino también es válido. Podemos heredar una clase o podemos relacionar objetos. En ambos casos significa herencia y si detallamos en características observamos lo siguiente:

  • Clase 1: Tengo 5 métodos.
  • Clase 2: Tengo 4 métodos.
  • Si la Clase 2 hereda de la Clase 1 podré disponer de 9 métodos.

Básicamente es: Usaré mis métodos más los métodos heredados.

En los ejercicios realizados en los capítulos anteriores vemos cómo heredamos de una clase abstracta. ¿eso es herencia?. La respuesta es SI.

Estudia este capítulo llamado Herencia de clases, encontrarás allí mayor detalle práctico, toma en cuenta que aquí hablamos del principio de la herencia como principio de desarrollo o de programación orientada a objetos. Veamos a continuación el ejemplo:

Clase User.php

<?php

class User 
{
    public $name;

    public function __construct($name)
    {
        $this->name = $name;
    }

    public function getName()
    {
        return $this->name;
    }
}

Esta sería mi clase principal, quiero que Admin.php herede de User.php. Suena lógico cuando pensamos que los administradores son usuarios también.

Clase Admin.php

<?php

class Admin extends User
{ 
    //...
} 

Aquí no desarrollamos ningún método, quiero simplemente usar los métodos desarrollados en User.php.

Archivo index.php

<?php 

require_once('User.php');
require_once('Admin.php'); 

$admin = new Admin('Italo Morales'); 
echo $admin->getName(); 

## Al ejecutar tenemos el siguiente resultado ##
//Italo Morales

Esto es nuestro día a día, en Laravel podemos ver como nuestra entidad User extiende de Authenticatable y así muchos ejemplos, esto dice claramente que desde la entidad de usuarios podré usar todos los métodos desarrollados en Authenticatable.

Podemos por supuesto crear la jerarquía necesaria, no hay límites al respecto. Básicamente es posible crear una escalera de clases sin ningún problema.

También es posible manejar la herencia relacionando objetos, imagina los siguientes casos.

  1. Tengo una clase que dentro de sus métodos requiere instanciar otro objeto y usar sus métodos, esto sería herencia o relación directa.
  2. Tengo dos objetos y paso un objeto por parámetro para que a partir de allí pueda usar sus métodos.

Hay muchas formas de usar métodos o funciones heredadas, en cualquier caso estarías aplicando este principio de programación orientada a objetos en tus proyectos.

  • Manuel Dautt (CTO)