lunes, 1 de noviembre de 2010

LA HERENCIA

La Herencia es el mecanismo por el que se crean nuevos objetos definidos en términos de objetos ya existentes. Por ejemplo, si se tiene la clase Ave, se puede crear la subclase Ganso, que es una especialización de Ave.

class Ganso extends Ave {
int numero_de_patas;
}

La palabra clave extends se usa para generar una subclase (especialización) de un objeto. Una Ganso es una subclase de Ave. Cualquier cosa que contenga la definición de Ave será copiada a la clase Ganso, además, en Ganso se pueden definir sus propios métodos y variables de instancia. Se dice que Ganso deriva o hereda de Ave.
Además, se puede sustituir los métodos proporcionados por la clase base. Utilizando nuestro anterior ejemplo de MiClase,  un ejemplo de una clase derivada sustituyendo a la función Suma_a_i():

import MiClase;
public class MiNuevaClase extends MiClase {
public void Suma_a_i( int j ) {
i = i + ( j/2 );
}
}

Ahora cuando se crea una instancia de MiNuevaClase, el valor de i también se inicializa a 10, pero la llamada al método Suma_a_i() produce un resultado diferente:
MiNuevaClase mnc;
mnc = new MiNuevaClase();
mnc.Suma_a_i( 10 );

En Java no se puede hacer herencia múltiple. Por ejemplo, de la clase aparato con motor y de la clase animal no se puede derivar nada, sería como obtener el objeto perro mecánico a partir de una máquina motorizada (aparato con motor) y un perro (animal). En realidad, lo que se pretende es copiar los métodos, es decir, pasar la funcionalidad del perro de verdad al perro mecánico, con lo cual no sería necesaria la herencia múltiple sino simplemente la compartición de funcionalidad que se encuentra implementada en Java a través de interfaces.

No hay comentarios:

Publicar un comentario