Con frecuencia es necesario tener clases con variables y funciones
similares a otra clase existente. De hecho, es una buena
práctica definir una clase genérica que pueda ser
usada en todos sus proyectos y adaptar ésta clase para las
necesidades de cada uno de sus proyectos especÃficos. Para
facilitar esto, las clases pueden ser extensiones de otras
clases. La clase extendida o derivada tiene todas las variables y
funciones de la clase base (esto es llamado 'herencia', a pesar
del hecho de que nadie muera) y lo que se agregue en la
definición extendida. No es posible substraer de una clase,
es decir, remover la definición de cualquier función
o variable existente. Una clase extendida siempre depende de una
clase base única, lo que quiere decir que no se soporta
herencia múltiple. Las clases son extendidas usando la
palabra clave 'extends'.
Esto define una clase Carrito_Con_Nombre que tiene todas las
variables y funciones de Carrito, más una variable
adicional $duenyo y una función
adicional definir_duenyo(). Se crea un carrito con nombre en la
forma usual y ahora es posible definir y obtener el dueño
del carrito. Aun es posible usar las funciones normales de un
carrito sobre los carritos con nombre:
Esto también se conoce como una relación
"padre-hijo". Se crea una clase, padre, y se usa
extends para crear una clase
basada en la clase padre: la clase hija. Es
posible incluso usar esta nueva clase hija y crear otra clase
basada en esta clase hija.
Nota:
¡Las clases deben ser definidas antes de ser usadas! Si
desea que la clase Carrito_Con_Nombre extienda
la clase Carrito, tendrá que definir la
clase Carrito primero. Si desea crear otra
clase llamada Carrito_amarillo_con_nombre
basada en la clase Carrito_Con_Nombre, debe
definir Carrito_Con_Nombre
primero. Resumiendo: el orden en que se definen las clases es
importante.