Programación en castellano
Inicio > Tutoriales > J2SE > Introducción a Java
-Tutoriales

Introducción a Java


Herencia

Si se supone que somos buenos programando, cuando creemos una clase es posible que sea algo útil. De modo que cuando estemos haciendo un programa distinto y necesitemos esa clase podremos incluirla en el código de ese nuevo programa. Es la manera más sencilla de reutilizar una clase.

También es posible que utilicemos esa clase incluyendo instancias de la misma en nuevas clases. A eso se le llama composición. Representa una relación "tiene un". Es decir, si tenemos una clase Rueda y una clase Coche, es de esperar que la clase Coche tenga cuatro instancias de Rueda:

class Coche {
  Rueda rueda1, rueda2, rueda3, rueda 4;
  ...
}

Sin embargo, en ocasiones, necesitamos una relación entre clases algo más estrecha. Una relación del tipo "es un". Por ejemplo, sabemos bien que un gato es un mamífero. Sin embargo es también un concepto más específico, lo que significa que una clase Gato puede compartir con Mamifero propiedades y métodos, pero también puede tener algunas propias.

Herencia.java
class Mamifero {
  String especie, color;
}

class Gato extends Mamifero {
  int numero_patas;
}

public class Herencia {
  public static void main(String[] args) {
    Gato bisho;
    bisho = new Gato();
    bisho.numero_patas = 4;
    bisho.color = "Negro";
    System.out.println(bisho.color);
  }
}

Como vemos en el ejemplo, el objeto bisho no sólo tiene la propiedad numero_patas, también color que es una propiedad de Mamifero. Se dice que Mamifero es la clase padre y Gato la clase hija en una relación de herencia. Esta relación se consigue en Java por medio de la palabra reservada extends.

Pero, además de heredad la funcionalidad de la clase padre, una clase hija puede sobreescribirla. Podemos escribir un método en la clase hija que tenga el mismo nombre y los mismos parámetros que un método de la clase padre:

Herencia.java
class Mamifero {
  String especie, color;
  public void mover() {
    System.out.println("El mamífero se mueve");
  }
}

class Gato extends Mamifero {
  int numero_patas;
  public void mover() {
    System.out.println("El gato es el que se mueve");
  }
}

public class Herencia {
  public static void main(String[] args) {
    Gato bisho = new Gato();
    bisho.mover();
  }
}

Al ejecutar esta nueva versión veremos que se escribe el mensaje de la clase hija, no el del padre.

Conviene indicar que Java es una lenguaje en el que todas las clases son heredadas, aún cuando no se indique explícitamente. Hay una jerarquía de objetos única, lo que significa que existe una clase de la cual son hijas todas las demás. Este Adán se llama Object y, cuando no indicamos que nuestras clases hereden de nadie, heredan de él. Esto permite que todas las clases tengan algunas cosas en común, lo que permite que funcione, entre otras cosas, el recolector de basura.

 
Patrocinados
 

Copyright © 1999-2007 Programación en castellano. Todos los derechos reservados.
Formulario de Contacto - Datos legales - Publicidad

Hospedaje web y servidores dedicados linux por Ferca Network

red internet: musica mp3 | logos y melodias | hospedaje web linux | registro de dominios | servidores dedicados
más internet: comprar | recursos gratis | posicionamiento en buscadores | tienda virtual | gifs animados