Curso PHP orientado a objetos – Herencia

A través de la herencia, una clase hija hereda de su padre los atributos y métodos, de manera que si por ejemplo tenemos una clase padre “Figura” con un atributo “área”, y dos clases hijas: “Rectángulo” y “Triángulo”.

Árbol de herencia

En PHP la palabra clave para definir la herencia es: “extend” y la forma en que se define es:

  • class Padre
  • class Hija extends Padre

El constructor y los atributos, “base” y “altura” están definidos en la clase “Figura”. El método “área” es propio de cada hija. Veamos la implementación y el resultado:

<?php

class Figura
{
	protected $base;
	protected $altura;

	function __construct($base, $altura)
	{
		$this->base = $base;
		$this->altura = $altura;
	}
}

class Rectangulo extends Figura
{
    function area(){
		return $this->base * $this->altura;
	}
}

class Triangulo extends Figura
{
    function area(){
		return $this->base * $this->altura /2;
	}
}

$rectangulo = new Rectangulo(2,2);
$triangulo = new Triangulo(2,2);

echo "<div>Para base = 2 y altura = 2:
		<ul>
			<li>Área para el rectángulo: "
 . $rectangulo->area() . ">/li>
			<li>Área para el triángulo: "
 . $triangulo->area() . "</li>
		</ul>
	</div>"
?>

Es importante destacar que:

  • No hemos creado un constructor ni para rectángulo ni para triángulo.
  • Los atributos también los ha heredado.
  • El intérprete ha sabido perfectamente cómo calcular el área para cada tipo de objeto, obteniendo los datos de unos atributos compartidos por la clase padre.

Imaginad la potencia de esta técnica en aplicaciones más complejas y la cantidad de tiempo y problemas que podemos llegar a ahorrar.

Author Description

F. Javier Carazo Gil

Casi Ingeniero Informático, co-fundador y administrador de Linux Hispano, además de desarrollar software y mantener sistemas en el CSIC, hace poco he fundado junto con Alberto Hornero una start-up: CODECTION donde trabajamos con software libre. Puedes saber más sobre mí, mi vida laboral, mis libros, mis artículos y mi día a día en @fjcarazo y en mi perfil público de LinkedIn.

  • Pingback: Bitacoras.com()

  • javier parra

    Eres un crack carazo, sigue asi

    salu2

  • @javier parra: Muchas gracias por la parte que me toca :), intentaremos seguir, pero siempre, ¡gracias a vuestro apoyo y a vuestro ánimo!

  • ¡gracias Javi! ¡muy bueno!

  • @ale prieto: Gracias a ti por seguirnos. En breve, ¡más cursos!