Documente Academic
Documente Profesional
Documente Cultură
7 HERENCIA
3.7.1 Concepto de Herencia
3.7.2 La clase Object
3.7.3 Redefinicion de metodos heredados
3.7.4 Clases y metodos abstractos
3.7.5 Constructores en clases derivadas
3.8 CLASES Y METODOS FINALES
3.9 INTERFACES
3.9.1 Concepto de interface
3.9.2 Definicin de interface
3.9.3 Herencia en interfaces
3.9.4 Utilizacin de interfaces
3.11 PERMISOS DE ACCESO EN JAVA
3.11.1 Accesibilidad de los packages
3.11.2 Accesibilidad de clases e interfaces
3.11.3 Accesibilidad de las variables y mtodos miembros de una clase
3.12 TRANSFORMACIONES DE TIPO: CASTING
3.12.1 Conversin de tipos primitivos
3.13 POLIMORFISMO
3.13.1 Conversin de objetos
http://thales.cica.es/rd/Recursos/rd99/ed99-0040-02/ed99-0040-02.html
HERENCIA
Se trata de un mecanismo que funciona como una estructura jerrquica, donde cada clase
puede tener una nica superclase (que se encuentra por encima de ella en la jerarqua) y una
o varias subclases (que se encuentran por debajo en la jerarqua). Las clases que se
encuentran por debajo se dice que heredan de las clases que se encuentran por encima.
Aqu tenis un diagrama que muestra un ejemplo de jerarqua:
En este diagrama:
Las subclases heredan todos los mtodos y atributos de sus superclases. Por tanto, al definir
una subclase, esta tiene automticamente el mismo comportamiento que la superclase que
hereda. Y tened en cuenta que esta herencia sube en la jerarqua hasta llegar a la cumbre.
Existe una raz en esta jerarqua, que es la clase Object. Todas las clases creadas heredan las
caractersticas y el comportamiento de Object.
En ocasiones, conviene tener mtodos en las clases heredadas con la misma signatura
(nombre de mtodo y parmetros que admite). Por ejemplo, podra ser interesante tener un
mtodo llamado sueldo en cada una de las clases que tuviese cdigo especfico para
controlar las bonificaciones especficas segn el cargo del empleado en la empresa. As,
tendramos algo parecido a esto:
_________________________________________________________
//Cdigo de Empleado.java
public class Empleado {
public Empleado () {
System.out.println(Empleado);
}
public void sueldo() {
System.out.println(Sueldo base de un empleado);
}
}
// Cdigo de Comercial.java
public class Comercial extends Empleado{
public Comercial () {
System.out.println(Comercial);
}
public void sueldo() {
System.out.println(Sueldo base de un empleado+sueldo especfico del cargo de
comercial);
}
}
// Cdigo de TestHerencia.java
Clases abastractas: A menudo existen clases que sirven para definir un tipo genrico
pero que no tiene sentido instanciar (crear objetos de ella). Queremos definir un
grupo genrico de clases y adems tengamos algunos mtodos implementados que
reutilizar.
Mtodos abstractos: Un mtodo abstracto significa que tiene que ser sobrescrito. No
est implementado.
Una clase con uno o varios mtodos abstractos tiene que ser declarada abstracta.
Los interfaces son un tipo de clase especial que no implementa ninguno de sus
mtodos. Todos son abstractos. Por tanto no se pueden instanciar.
Si una clase que hereda de un interface, no implementa todos los mtodos de este,
deber ser definida como abstracta.
HERENCIA MULTIPLE
Todos sabemos que la herencia es un mecanismo propio de la programacin orientada a
objetos POO. Nos permite crear clases a partir de otra, las cuales las unen vnculos
sumamente estrechos, casi de familia. Es por ello que se llama herencia.
Si buscamos modelar nuestras clases u objetos como propios de la realidad, todos los
conceptos de la orientacin a objetos nos sern muy fcil de implementar mientras
programamos.
Implementando herencia tenemos las siguientes ventajas:
Modelado de la realidad
Evitar redundancias en el cdigo
Facilita la reutilizacin del cdigo, as como reduce el nmero de lneas a escribir
Sirve como el soporte o la base para el polimorfismo
Herencia y polimorfismo
Con la herencia podemos definir una clase a partir de otra que ya exista, de forma que la
nueva clase tendr todas las variables y mtodos de la clase a partir de la que se crea, ms
las variables y mtodos nuevos que necesite. A la clase base a partir de la cual se crea la
nueva clase se le llama superclase.
En una clase abstracta podramos implementar los mtodos que nos interese,
dejando sin implementar los dems (dejndolos como mtodos abstractos). Dichos
mtodos tendran que implementarse en las clases hijas.
En un interfaz no podemos implementar ningn mtodo en la clase padre, y cada
clase hija tiene que hacer sus propias implementaciones de los mtodos. Adems,
las clases hija podran implementar otros interfaces.
____________________
Otras posibilidades
this se usa para hacer referencia a los miembros de la propia clase. Se utiliza cuando
hay otros elementos con el mismo nombre, para distinguir :
public class MiClase {
int i;
public MiClase (int i) {
this.i = i;
// i de la clase = parametro i
}
}
super se usa para llamar al mismo elemento en la clase padre. Si la clase MiClase
tiene un mtodo Suma_a_i(...), lo llamamos con:
public class MiNuevaClase extends MiClase {
public void Suma_a_i (int j) {
i = i + (j / 2);
super.Suma_a_i (j);
}
}