| Portada | Monotemáticos | Secciones | Desarrolladores | Comunidad | Servicios | Servicios profesionales | RSS | ||||
17/6/05 - Como estamos viendo, los mecanismos de herencia en PHP5 son similares a los existentes en otros lenguajes de programación. Ahora vamos a relatar cómo construir una clase que hereda de otra.
Continuando con nuestro ejemplo de videoclub, vamos a construir una clase para los soportes de tipo cinta de video. Las cintas de vídeo tienen un atributo nuevo que es la duración de la cinta. No tienen ninguna clase nueva, aunque debemos aprender a sobrescribir métodos creados para el soporte, dado que ahora tienen que hacer tareas más específicas.
Sobrescribir métodos
Antes de mostrar el código de la clase cinta_video, vamos a hablar sobre la sobrescritura o sustitución de métodos, que es un mecanismo por el cual una clase que hereda puede redefinir los métodos que está heredando.
Pensemos en una cafetera. Sabemos que existen muchos tipos de cafeteras y todas hacen café, pero el mecanismo para hacer el café es distinto dependiendo del tipo de cafetera. Existen cafeteras express, cafeteras por goteo y hasta se puede hacer café con un calcetín. Nuestra cafetera "padre" (de la que va a heredar todas las cafeteras) puede tener definido un método hacer_cafe(), pero no necesariamente todas las cafeteras que puedan heredar de esta hacen el café siguiendo el mismo proceso.
Entonces podemos definir un método para hacer café estándar, que tendría la clase cafetera. Pero al definir las clases cafetera_express y cafetera_goteo, deberíamos sobrescribir el método hacer_cafe() para que se ajuste al procedimiento propio de estas.
La sobrescritura de métodos es algo bastante común en mecanismos de herencia, puesto que los métodos que fueron creados para una clase "padre" no tienen por qué ser los mismos que los definidos en las clases que heredan.
Veremos cómo sobrescribir o sustituir métodos en un ejemplo de herencia, siguiendo nuestro ejemplo de videoclub.
Sintaxis para heredar en PHP 5
Habíamos comentado que el videoclub dispone de distintos elementos para alquilar, como cintas de vídeo, DVD o juegos. Habíamos creado una clase soporte, que vamos a heredar en cada uno de los elementos disponibles para alquiler. Vamos a empezar por la clase cinta_video, cuyo código será el siguiente.
class cinta_video extends soporte{
private $duracion;
function __construct($tit,$num,$precio,$duracion){
parent::__construct($tit,$num,$precio);
$this->duracion = $duracion;
}
public function imprime_caracteristicas(){
echo "Película en VHS:<br>";
parent::imprime_caracteristicas();
echo "<br>Duración: " . $this->duracion;
}
}
Con la primera línea class cinta_video extends soporte estamos indicando que se está definiendo la clase cinta_video y que va a heredar de la clase soporte.
| Nota: Como se está heredando de una clase, PHP tiene que conocer el código de la clase "padre", en este caso la clase soporte. De modo que el código de la clase soporte debe estar incluido dentro del archivo de la clase cinta_video. Podemos colocar los dos códigos en el mismo fichero, o si están en ficheros independientes, debemos incluir el código de la clase soporte con la instrucción include o require de PHP. |
| Autoría, licencia y acciones sobre este artículo | ||||||
|
Informe de Miguel Angel Alvarez*
Director de DesarrolloWeb.com URL: http://www.desarrolloweb.com Atención: Contenido exclusivo de DesarrolloWeb.com. No reproducir. Copyright. * Para consultas técnicas utilizar la lista de correo.
|
| Comentarios sin revisar |
| Entre los comentarios no revisados puede haber algunos interesantes que se hayan enviado recientemente. |
| Ver los comentarios no revisados |
| Añadir un comentario del artículo |
| Enlaces: |
| Maestrosdelweb |
Lectura recomendada + PHP 5 Compra este libro en Agapea, la librería urgente a domicilio. |
||||||||
Tienda DesarrolloWeb