28. La Herencia

La herencia, como su nombre indica, es con la que conseguimos heredar atributos y metodos de otra clase existente. Con "super" podriamos acceder a la clase heredada.

Por ejemplo, imaginemos que tenemos una clase llamada "Avion" y su codigo seria el siguiente:

 

public class Avion{

    int velocidad = 350;

    String color = "Azul";

 

    public void despegar(){

        System.out.println("El avion despega");

    }

}

 

Esta clase dispondria de dos atributos (variables) y un metodo llamado "despegar".

Creamos otra clase llamada "Principal" con su respectivo "main" y escribimos el siguiente codigo:

 

public class Principal extends Avion{

    public void caracteristicas(){

        super.despegar();

        System.out.println("El avion "+super.color+" alcanza la velocidad de "+super.velocidad+" kilometros hora");

    }

    public static void main(String[]args){

        Principal p = new Principal();

        p.caracteristicas();

    }

}

 

Si te fijas, en la clase principal, hemos añadido la palabra "extends" y luego "Avion", esto significa que la clase "Principal" esta heredando de la clase "Avion", entonces, por medio de "super" tendra acceso a los atributos y metodos de la clase "Avion".

 

Ahora imaginate, que creamos otra clase que se llama "Pilotos" que quedaria asi:

 

public class Pilotos{

    String piloto = "Smith";

 

    public void encender(){

        System.out.println("Enciende los motores");

    }

}

 

Y volvemos a la clase "Avion" y le agregamos lo siguiente:

 

public class Avion extends Pilotos{

      int velocidad = 350;

    String color = "Azul";

 

    public void encender(){

        super.encender();

    }

 

    public void despegar(){

        System.out.println("El avion despega");

    }

}

 

Y a la clase "Principal" le agregamos lo siguiente:

 

public class Principal extends Avion{

    public void caracteristicas(){

        System.out.println(super.piloto);

        super.encender();

        super.despegar();

        System.out.println("El avion "+super.color+" alcanza la velocidad de "+super.velocidad+" kilometros hora");

    }

    public static void main(String[]args){

        Principal p = new Principal();

        p.caracteristicas();

    }

}

 

¿Que ha ocurrido aqui?, pues sencillamente que las tres clases estan vinculadas. Significa que la clase "Principal" hereda de "Avion", pero como "Avion" hereda de "Piloto", pues la clase "Principal" tambien tiene acceso a la clase "Piloto" que es la ultima que hemos creado.

El esquema quedaria asi:

 

Principal >>>>>>>>>>>>>>>>>>>> Avion >>>>>>>>>>>>>>>>>>> Piloto

                    Hereda de...                                   Hereda de...

                    Tiene acceso a Avion y Piloto                          Tiene acceso a Piloto