Programación Herencias y polimorfismo

HERENCIA el mecanismo de implementación mediante el cual elementos más específicos incorporan la estructura y comportamiento de elementos más generales (Rumbaugh 99)

Gracias a la herencia es posible especializar o extender la funcionalidad de una clase, derivando de ella nuevas clases.
 La herencia es siempre transitiva: una clase puede heredar características
de superclases que se encuentran muchos niveles más arriba en la jerarquía
de herencia.

Ejemplo: si la clase Perro es una subclase de la clase Mamífero, y la clase Mamífero
es una subclase de la clase Animal, entonces el Perro heredará atributos tanto de
Mamífero como de Animal.

La herencia es el mecanismo que:
- sirve de soporte para registrar y utilizar las relaciones conceptuales existentes entre las clases
-posibilita la definición de una clase a partir de otra

PRINCIPALES USOS


La herencia como reutilización de código: Una clase derivada puede heredar comportamiento de una clase base, por tanto, el código no necesita volver a ser escrito
para la derivada.
Herencia de implementación
La herencia como reutilización de conceptos: Esto ocurre cuando una clase derivada sobrescribe el
comportamiento definido por la clase base. Aunque no se comparte ese código entre ambas clases, ambas comparten el prototipo del método (comparten el
concepto).

TIPOS DE HERENCIA

CREACIÓN DE HERENCIAS
El constructor de la clase hija refina el comportamiento del padre
􀂄 En Java los constructores no se heredan
􀂄 La primera sentencia del constructor de la clase hija SIEMPRE es una llamada al constructor de la clase padre.
􀂄 La llamada al constructor del padre puede ser:
􀂄 Implícita:
􀂄 Si se omite, se llamará implícitamente al constructor por defecto
􀂄 Equivale a poner como primera sentencia super();
􀂄 Si no existe el constructor por defecto en la clase padre dará un error en tiempo de compilación
􀂄 Explícita:
􀂄 super(); o super(a,b); o …
􀂄 Dependiendo de si el constructor al que invocamos tiene o no
argumentos

EJEMPLO

public class DepositoEstructurado extends Deposito {
         private double tipoInteresVariable;
         private double capitalVariable;
public DepositoEstructurado(Persona titular, double capital,
         int plazoDias, double tipoInteres, double tipoInteresVariable,double capitalVariable) {
//Llamada explícita al constructor del padre
     super(titular, capital, plazoDias, tipoInteres);
           this.tipoInteresVariable = tipoInteresVariable;
             this.capitalVariable = capitalVariable;
}

}



POLIMORFISMO

El término polimorfismo significa que hay un nombre (variable, función o clase) y muchos
significados diferentes (distintas definiciones).

Formas de polimorfismo:
􀂄 Polimorfismo de asignación (variables polimorfas)
􀂄 Polimorfismo puro (función polimorfa)
􀂄 Polimorfismo ad hoc (sobrecarga)
􀂄 Polimorfismo de inclusión (redefinición)
􀂄 Polimorfismo paramétrico (genericidad)

POLIMORFISMO DE ASIGNACIÓN

Capacidad de una entidad de referenciar en tiempo de ejecución a objetos de diferentes clases.
􀂄 El conjunto de clases a las que se puede hacer referencia está restringido por la herencia
􀂄 Importante para escribir código genérico
􀂄 El polimorfismo implica que una variable tiene un tipo estático y un tipo dinámico




Comentarios

  1. Me gusto, es sencillo pero ordenado y no sobre cargado de informacion, el color del tema del blog es uno, en este caso negro lo cual no le da mucho contraste pues no hay otros colores con los cuales choquen o emparejen, en cuanto a los temas estan completos por lo que en una investigacion para obtener conocimientos de estos temas, sera satisfactorio contar con este blog.

    ResponderEliminar

Publicar un comentario