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
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;
}
}
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
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).
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
Excelente!!!
ResponderEliminarMe 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.
ResponderEliminarBien hecho !!
ResponderEliminar