
La herencia es un mecanismo de la POO que nos permite definir nuevas clases en base a otra ya existente. Las nuevas clases que heredan también se conocen con el nombre de subclases. La clase de la que heredan se llama clase base o superclase.
Por ejemplo, en nuestra tienda web vamos a tener productos de distintos tipos. En principio hemos creado para manejarlos una clase llamada Producto
, con algunos atributos y un método que genera una salida personalizada en formato HTML del código.
class Producto {
public $codigo;
public $nombre;
public $nombre_corto;
public $pvp;
public function muestra() {
echo "<p>" . $this->codigo . "</p>";
}
}
Esta clase es muy útil si la única información que tenemos de los distintos productos es la que se muestra arriba. Pero, si quieres personalizar la información que vas a tratar de cada tipo de producto (y almacenar, por ejemplo para los televisores, las pulgadas que tienen o su tecnología de fabricación), puedes crear nuevas clases que hereden de Producto
. Por ejemplo, TV
, PC
, Movil
.
class TV extends Producto {
public $pulgadas;
public $tecnologia;
}
Como puedes ver, para definir una clase que herede de otra, simplemente tienes que utilizar la palabra extends
indicando la superclase. Los nuevos objetos que se instancien a partir de la subclase son también objetos de la clase base; se puede comprobar utilizando el operador instanceof()
.
$t = new TV();
if ($t instanceof Producto) {
// Este código se ejecuta pues la condición es cierta.
. . .
}
Antes viste algunas funciones útiles para programar utilizando objetos y clases. Las de la siguiente tabla están además relacionadas con la herencia.
Función | Ejemplo | Significado |
---|---|---|
get_parent_class () |
echo get_parent_class($t); |
Devuelve el nombre de la clase padre del objeto o la clase que se indica. |
is_subclass_of () |
if(is_subclass_of($t,'Producto') |
Devuelve true si el objeto o la clase del primer parámetro, tiene como clase base a la que se indica en el segundo parámetro, o
false en caso contrario. |