La herencia en el concepto de objetos es muy importante y consiste en crear una clase y que ésta herede los métodos y propiedades de otra clase.
Ahora bien, pensemos en que momento nos serviría tener los métodos y propiedades en diferentes clases sí al fin y al cabo solo voy a construir un objeto.
Es cierto que podría poner todos los métodos y propiedades dentro de 1 sola clase e instanciar ésta, pero lo más importante en herencia es la reutilización que podemos darle a las clases.
Imaginemos un auto, todos los vehículos tienen cosas en común, poseen ruedas, volantes, luces y también poseen muchas acciones en común como avanzar, frenar o doblar.
Todas éstas cosas en común pueden ir en una clase base y cuando nos topemos con vehículo que tenga determinadas particularidades como ser levanta vidrios electrónicos, stereo MP3 o Air Bug podemos crear un clase especial para éste tipo de vehículo y hacerla heredar de la clase base que ya tiene todos los problemas resueltos a lo que un vehículo se refiere.
La palabra reservada para hacer herencia de clases es extends
Veamos un ejemplo de una calculadora.
Crearemos una clase con las operaciones aritméticas básicas y luego crearemos una clase con operaciones más complejas que para resolverse usarán las operaciones básicas.
<?php class Operaciones { public function suma($primero, $segundo){ return $primero + $segundo; } public function resta($primero, $segundo){ return $primero - $segundo; } public function division($primero, $segundo){ return $primero / $segundo; } public function multiplicacion($primero, $segundo){ return $primero * $segundo; } } $operaciones_basicas = new Operaciones; echo $operaciones_basicas->suma(10,15); echo "<br />"; echo $operaciones_basicas->resta(40,25); echo "<br />"; echo $operaciones_basicas->division(30,5); echo "<br />"; echo $operaciones_basicas->multiplicacion(8,7); echo "<br />"; unset($operaciones_basicas); /* Ahora crearemos una clase para realizar operaciones complejas */ class Operaciones_complejas extends Operaciones{ function porcentaje($numero, $porcentaje){ $parcial = $this->multiplicacion($numero, $porcentaje); $resultado = $this->division($parcial, 100); return $resultado; } } $operaciones_complejas = new Operaciones_complejas; echo $operaciones_complejas->porcentaje(50,15); echo "<br />"; ?>