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.

Entradas relacionadas:

  1. Curso PHP orientado a objetos – Sobrecarga
  2. Cursos PHP orientado a objetos – Crear una clase (constructor)
  3. Cursos PHP orientado a objetos – Crear una clase (atributos y propiedades)
  4. Curso PHP orientado a objetos – Introducción
  5. Curso C# con Mono – Herencia

Acerca de F. Javier Carazo Gil

Casi Ingeniero Informático, co-fundador y administrador de Linux Hispano, co-fundador de Red de Autores y Geometrio, 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

  • http://www.jcarazo.com F. Javier Carazo Gil

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

  • http://www.elaleprieto.com.ar ale prieto

    ¡gracias Javi! ¡muy bueno!

  • http://www.jcarazo.com F. Javier Carazo Gil

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