La herencia

2176 vistas

La herencia es uno de los principales conceptos de la Programación Orientada a Objetos (POO). Permite obtener unos niveles de reutilización muy elevados, cosa que aumenta proporcionalmente la productividad y la fiabilidad de las aplicaciones y facilita el mantenimiento.

La herencia es un mecanismo que permite definir una nueva clase a partir de una clase ya existente. En Java, para definir una clase a partir de otra, se coloca la palabra clave extends entre el nombre de la nueva clase y el de la clase que se pretende heredar.



java
  1. public class Hija extends Padre {
  2.   // aquà el código de la clase hija
  3. }



La herencia implica varias cosas:

  • La clase hija hereda el tipo del padre



java
  1. public class Color(){
  2.   String nombre;
  3.   public Color(String nombre){
  4.       this.nombre = nombre;
  5.   }
  6. }
  7.  
  8. public class Rojo extends Color{
  9.   public Rojo(){
  10.       super("rojo");
  11.   }
  12. }
  13.  
  14. public class OtraClase(){
  15.   public void setColor(Color unColor) {
  16.       //etc.
  17.   }
  18.  
  19.   public static void main(String[] args){
  20.       OtraClase ac = new OtraClase();
  21.       ac.setColor(new Color("verde"));
  22.       ac.setColor(new Rojo());
  23.   }
  24. }



  • La clase hija hereda los atributos, métodos y constructores de la clase padre

El acceso a estos atributos o métodos se hace con la palabra clave super. Para más información, ver la FAQ [iurl=90&all=0&fs=785#789]this y super[/iurl]

Veamos como se define la accesibilidad a los componentes de la super-clase en función de los modificadores:

[table]
  [tr]
    [td]Palabra[/td]
    [td]Visibilidad[/td]
  [/tr]
  [tr]
    [td]public[/td]
    [td]sÃ[/td]
  [/tr]
  [tr]
    [td]"vacÃo"[/td]
    [td]SÃ si la clase hija se encuentra en el mismo package que la super-clase[/td]
  [/tr]
  [tr]
    [td]protected[/td]
    [td]sÃ[/td]
  [/tr]
  [tr]
    [td]private[/td]
    [td]No[/td]
  [/tr]
[/table]