POO: Finalidad de la herencia y conceptos básicos

Una vez que creas una clase puede crear una derivada de esta, una subclase. La herencia en programación orientada a objetos ahorra mucho trabajo reciclando código. La finalidad de la herencia es poder pasar todo el contenido de una clase, propiedades y métodos,  a una subclase y modificar sólo las partes que sean diferentes.

Para poder extender una clase a una subclase es preciso usar el operador extends. Voy a poner de ejemplo una universidad que quiere loguearse en la intranet. Habrá usuarios pero, no todos son iguales, algunos serán profesores y otros alumnos y cada uno tendrá sus propiedades y métodos en particular pero tendrán unos cuantos en común.

En este ejemplo creo 2 clases y muestro todas las propiedades de la clase Profesor instanciada.

La clase original usuario tiene propiedades nombre, clave y correo además de un método. La clase Profesor que hereda de Usuario cuenta con propiedades y métodos propios pero no quita que pueda usar los de la superclase o clase padre. En el método mostrar_datos, se imprimen las propiedades del objeto usando $this para hacer referencia al propio objeto.

El operador parent

Este operador permite diferenciar el método de una clase padre en caso de que el nombre del método se repita tanto en la superclase como en la sublcase.

En este caso un método se repite 2 veces en ambas clases, metodo_repetido. Al instanciar la clase Hijo si invoco el metodo_repetido llamaría al de clase Hijo. Si quiero emplear el método de clase Padre empleo el operador parent en otro método de la clase hijo para así poder llamarlo.

Si quisieras llamar al método de clase actual podrías emplear el operador self

Constructores de las subclases

Una consideración a tener en cuenta sobre la herencia es cuando extiendes una clase y creas un constructor, PHP no llama automáticamente al constructor de la clase padre. Para llamar al constructor de la clase padre, bastará con usar el operador parent y hacer referencia al constructor

Métodos finales

En herencia, una clase que hereda de otra puede sobrescribir los métodos de la clase padre. Para que esto no suceda, se emplea el atributo final en el método. Por ejemplo

Y hasta aqui la herencia en PHP y algunos de los conceptos más importantes. A seguir picando 🙂