Tema IV Herencia. Es un mecanismo que permite basar una clase nueva a partir de una clase existente. Con la herencia, la clase nueva hereda todos aquellos atributos y metodos que tenga la clase existente (respetando el encapsulamiento) Con herencia se establece una relación de tipo es un, que consiste en que una clase es de un tipo de otra. Jerarquia de herencia es un mapa de relaciones en forma de árbol que se da entre clase como resultado de la herencia. Una clase hija o descendiente es la que recibe la herencia, o tambien se conoce como subclase o subtipo Una clase madre o ancestro es la que se usa como base de una relación de herencia y se conoce como superclase o supertipo Tipos de Herencia. Reutilizar la implantación. Cuando se reutiliza una clase y a la nueva clase no se le agrega ningun metodo o atributo nuevo, solo se toma el código existente. Con esta técnica no se debe utilizar solamente tipo de dato por obtener código, por que es una técnica muy pobre ya que no agrega conceptos utiles al software creado Es mejor utilizar composición y delegación Por diferencia o especialización Aplicar herencia de una clases y agregar solamente código que la haga distinta de la clase ancestro. Redefinir - Dado un método de una clase ancestro, reescribirlo en la clase descendiente. Especializar - Agregar nuevos métodos a la clase. Por sustitución de tipos. Se aplica la herencia con el fin de que una clase nueva se utilice en otra clase ya existente que solo conoce a la clase ancestro. De esta manera, la herencia se utiliza para que una clase nueva encaje en una clase vieja. Usando redefinición de métodos es posible alterar el comportamiento del sistema. El polimorfismo y la ligadura dinámica ( dynamic binding) permiten que esta técnica ayude a construir sistemas reutilizables y extendibles.