fbpx

Herencia en JAVA

La herencia en Java es un mecanismo en el que un objeto adquiere todas las propiedades y comportamientos de un objeto principal. Es una parte importante de los OOP (sistema de programación orientado a objetos).

La idea detrás de la herencia en Java es que puede crear nuevas clases que se basan en clases existentes. Cuando hereda de una clase existente, puede reutilizar métodos y campos de la clase principal. Además, también puede agregar nuevos métodos y campos en su clase actual.

Vídeo Explicativo

Términos en Herencia

Clase: Una clase es un grupo de objetos que tienen propiedades comunes. Es una plantilla o modelo a partir del cual se crean objetos.

Subclase/Clase hija: Subclase es una clase que hereda la otra clase. También se denomina clase derivada, clase extendida o clase secundaria.

Superclase/clase padre: la superclase es la clase de la que una subclase hereda las características. También se denomina clase base o clase principal.

Reutilización: como su nombre lo especifica, la reutilización es un mecanismo que le permite reutilizar los campos y métodos de la clase existente cuando crea una nueva clase. Puede utilizar los mismos campos y métodos ya definidos en la clase anterior.

Sintaxis en la herencia de Java

class ClaseHija extends ClasePadre {
    //Metodos y campos
}

La palabra clave extends indica que está creando una nueva clase que se deriva de una clase existente. El significado de “extends” es aumentar la funcionalidad.

En la terminología de Java, una clase que se hereda se llama clase padre o superclase, y la nueva clase se llama clase hija o subclase.

Ejemplo de herencia de Java

class Vehiculo {
        private int numeroRuedas;

        public Vehiculo(int numeroRuedas) {
            this.numeroRuedas = numeroRuedas;
        }
    }

    class Coche extends Vehiculo {
        private String marca;

        public Coche(String marca, int numeroRuedas) {
            super(numeroRuedas);
            this.marca = marca;
        }
    }

Tipos de herencia en Java

Ejemplo de herencia única

Cuando una clase hereda otra clase, se conoce como herencia única. En el ejemplo que se muestra a continuación, la clase Perro hereda la clase Animal, por lo que existe la herencia única.

class Vehiculo {
    private int numeroRuedas;

    public Vehiculo(int numeroRuedas) {
        this.numeroRuedas = numeroRuedas;
    }

    public void conducir() {
        System.out.println("Conduciendo...");
    }
}

class Coche extends Vehiculo {
    private String marca;

    public Coche(String marca, int numeroRuedas) {
        super(numeroRuedas);
        this.marca = marca;
    }

    public void abrirPuerta(){
        System.out.println("Abriendo puerta...");
    }
}
public class Main {

    public static void main(String[] args) {
        Coche coche = new Coche("Mercedes", 4);
        coche.abrirPuerta();
        coche.conducir();
    }

}

Salida

$ Abriendo puerta...
$ Conduciendo...

Ejemplo de herencia multinivel

Cuando existe una cadena de herencia, se le conoce como herencia multinivel. Como puede ver en el ejemplo que se muestra a continuación, la clase BabyDog hereda la clase Dog, que nuevamente hereda la clase Animal, por lo que hay una herencia de varios niveles.

class Vehiculo {
    private int numeroRuedas;

    public Vehiculo(int numeroRuedas) {
        this.numeroRuedas = numeroRuedas;
    }

    public void conducir() {
        System.out.println("Conduciendo...");
    }
}

class Coche extends Vehiculo {
    private String marca;

    public Coche(String marca, int numeroRuedas) {
        super(numeroRuedas);
        this.marca = marca;
    }

    public void abrirPuerta() {
        System.out.println("Abriendo puerta...");
    }
}

class CuatroXCuatro extends Coche {

    public CuatroXCuatro(String marca, int numeroRuedas) {
        super(marca, numeroRuedas);
    }

    public void activarCuatroPorCuatro() {
        System.out.println("Activando 4x4");
    }
}

public class Main {

    public static void main(String[] args) {
        CuatroXCuatro coche = new CuatroXCuatro("Mercedes", 4);
        coche.abrirPuerta();
        coche.conducir();
        coche.activarCuatroPorCuatro();
    }

}

Salida

$ Abriendo puerta...
$ Conduciendo...
$ Activando 4x4

Ejemplo de herencia jerárquica

Cuando dos o más clases heredan una sola clase, se conoce como herencia jerárquica. En el ejemplo que se muestra a continuación, las clases Perro y Gato heredan la clase Animal, por lo que existe una herencia jerárquica.

class Vehiculo {
    private int numeroRuedas;

    public Vehiculo(int numeroRuedas) {
        this.numeroRuedas = numeroRuedas;
    }

    public void conducir() {
        System.out.println("Conduciendo...");
    }
}

class Coche extends Vehiculo {
    private String marca;

    public Coche(String marca, int numeroRuedas) {
        super(numeroRuedas);
        this.marca = marca;
    }

    public void abrirPuerta() {
        System.out.println("Abriendo puerta...");
    }
}

class Moto extends Vehiculo {

    private int centimetrosCubicos;

    public Moto(int centimetrosCubicos, int numeroRuedas) {
        super(numeroRuedas);
        this.centimetrosCubicos = centimetrosCubicos;
    }

    public void subirMarchaAPedal() {
        System.out.println("Subiendo marcha a pedal...");
    }
}

public class Main {

    public static void main(String[] args) {
        Coche coche = new Coche("Mercedes", 4);
        coche.abrirPuerta();
        coche.conducir();
        // coche.subirMarchaAPedal(); este no es posible
    }

}

Salida

$ Abriendo puerta…
$ Conduciendo…

Deja un comentario