PHP 8: Creando objetos a partir de otros, herencia simple

Objetos relacionadosEstoy con algo más de tiempo, así que jugando un poco más con la programación orientada a objetos, les escribo ahora sobre cómo crear objetos a partir de otros de la forma más simple.

Hay tres formas de crear objetos a partir de otros objetos: mediante extends, con clases abstract, y con interface.

Todo éste proceso es lo que se llama herencia, donde los objetos hijos no heredan casas ni coches ni grandes fortunas xD, si no que en éste caso heredan funciones y variables.

Empezando con la herencia simple

Vamos a suponer lo siguiente. Queremos usar en nuestro programa la información de ciertos vehículos, y dichos vehículos pueden ser motos, coches y camiones. Usando la palabra reservada extends vamos a ver con un ejemplo lo sencillo que es el siguiente:

<?php

// clase base
class vehiculo {

    public $matricula;

}

// clases que extienden la clase base
class moto extends vehiculo {

    public $velocidadMaxima;

}

class coche extends vehiculo {

    public $tipo;

}

class camion extends vehiculo {

    public $numeroRuedas;

}

// creamos 3 vehiculos
$micoche = new coche();
$mimoto = new moto();
$micamion = new camion();

// tanto la moto como el coche y el camión tienen matrícula
// porque heredan la variable matrícula
$micoche->matricula = "ABC123";
$micoche->tipo = "utilitario";
$mimoto->matricula = "DEF123";
$mimoto->velocidadMaxima = 300;
$micamion->matricula = "GHI123";
$micamion->numeroRuedas = 12;

echo "El vehículo con matrícula " . $micamion->matricula . " tiene " . $micamion->numeroRuedas . " ruedas.";

Si ejecutamos el código fuente nos saldrá: “El vehículo con matrícula GHI123 tiene 12 ruedas.”

Lo importante o nuevo en éste capítulo de la serie es la palabra reservada extends con la que se crean las nuevas clases a partir de otras. Aquí arriba tenemos cuatro clases, la clase base que tiene sólo una variable para guardar la matrícula.

Por otro lado tenemos las clases coche, moto y camión que se crean a partir de la clase base vehículo. Y por lo tanto heredan la variable para guardar la matrícula. Podemos ver que en las últimas líneas del ejemplo, tanto $micoche, como $mimoto y $micamion tienen la variable $matricula aunque no se ha declarado en dichas clases pero sí en la clase base.

Imaginemos entonces si quisiéramos podríamos crear a su vez subtipos de camiones que extendieran de la clase camión, añadiendo así más variables y funciones. Así sucesivamente.

Terminando

Para terminar, podemos de paso ver qué pasa cuando modificamos la clase base y cambiamos la variable de la matrícula a protected:

// clase base
class vehiculo {
    protected $matricula;
}

Ahora poniendo matricula protegido nos saldrá un error, porque protegiendo dicha variable lo que hacemos es que no se herede en las clases hijas. Es decir, en el caso del camión, protegiendo la matrícula, dicho camión ahora sólo tendrá una variable llamada $numeroRuedas porque no ha heredado la variable $matricula.

Hay otros tipos de como el que acabamos de ver protected, también tenemos abstract y static, pero eso es para otro post.

De nuevo me remito a la documentación oficial: http://www.php.net/manual/es/

Si te ha gustado, te ha parecido interesante, te ha aclarado alguna cosa, quieres recomendarlo, decirme que siga escribiendo, darme ánimos, dale un click a +1, comparte, facebootealo, tuitea, tuentiea o deja un mensaje aquí abajo que es gratis 😉

Un saludo!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *