13.1 Herencia y polimorfismo en Java: concepto de herencia

La herencia es uno de los pilares fundamentales de la programación orientada a objetos (POO), y Java, al ser un lenguaje que adopta este paradigma, ofrece recursos robustos para su implementación. La herencia es un mecanismo que permite que una nueva clase derive propiedades y comportamientos de una clase existente. La clase que se hereda se denomina clase base, superclase o clase principal, mientras que la clase que se hereda se conoce como clase derivada, subclase o clase secundaria.

En la práctica, la herencia permite reutilizar el código y crear una jerarquía de clases relacionadas. Esto no sólo ahorra tiempo y esfuerzo en el desarrollo de software, sino que también ayuda a mantener el código organizado, más fácil de mantener y expandir.

Cómo funciona la herencia en Java

En Java, la herencia se realiza con la palabra clave extends. Cuando una clase se define como la extensión de otra, hereda todos los campos (atributos) y métodos no privados de la clase principal. Esto significa que la clase hija puede usar estos miembros como propios.

Ejemplo:

clase Vehículo {
    marca de cadena protegida = "Ford"; // atributo de clase de vehículo
    public void bocina() { // Método de clase de vehículo
        System.out.println("¡Tuut, tuut!");
    }
}

clase Coche extiende Vehículo {
    cadena privada modelName = "Mustang"; // atributo de clase de coche
    público estático vacío principal (String [] argumentos) {
        // Crea un objeto de la clase Car
        Coche miCoche = coche nuevo();

        // Llama al método de clase Vehículo
        miCoche.honk();

        // Accede al atributo Clase de vehículo
        System.out.println(myCar.brand + " " + myCar.modelName);
    }
}

En este ejemplo, Car es una subclase de Vehicle. La clase Car hereda el método honk y el atributo brand de la clase Vehicle y también define su propio atributo. , nombredelmodelo.

Anulación de método

Una subclase en Java puede anular los métodos de la superclase. Esto se hace cuando la subclase necesita una implementación específica para un método heredado. El superíndice es una forma de polimorfismo, que se analizará más adelante.

Ejemplo:

clase animal {
    sonido público vacío() {
        System.out.println("El animal emite un sonido");
    }
}

clase Cerdo extiende Animal {
    sonido público vacío() {
        System.out.println("El cerdo dice: pipí");
    }
}

clase principal {
    público estático vacío principal (String [] argumentos) {
        Animal miAnimal = nuevo Animal(); // Crea un objeto de la clase Animal
        Animal miCerdo = nuevo Cerdo(); // Crea un objeto de la clase Pig

        miAnimal.sonido();
        miPig.sonido();
    }
}

En este ejemplo, la clase Pig anula el método sound de la clase Animal. Cuando se llama al método en el objeto myPig, se utiliza la implementación de la clase Pig, no la de la clase Animal.

Usando super

La palabra clave super en Java se utiliza dentro de los métodos de subclase para referirse a miembros (métodos o atributos) de la superclase. Esto es especialmente útil cuando anulamos métodos pero aún queremos acceder a la implementación de la superclase.

Ejemplo:

clase animal {
    sonido público vacío() {
        System.out.println("El animal emite un sonido");
    }
}

clase Cerdo extiende Animal {
    sonido público vacío() {
        super.sonido(); // Llama al método de superclase
        System.out.println("El cerdo dice: pipí");
    }
}

Aquí, la clase Pig llama al método sound de la superclase Animal antes de ejecutar su propio código.

Polimorfismo en Java

El polimorfismo, otro pilar de la programación orientada a objetos, permite que objetos de diferentes clases sean tratados como objetos de una superclase común. Esto es particularmente poderoso en combinación con la herencia, ya que permite que un único método o clase opere en objetos de diferentes clases.

El polimorfismo en Java se logra, en su mayor parte, mediante la sobrecarga y anulación de métodos. La sobrecarga ocurre cuando dos o más métodos de la misma clase tienen el mismo nombre pero parámetros diferentes. La anulación, como hemos visto, ocurre cuando una subclase proporciona una implementación específica para un método que ya proporciona su superclase.

Ejemplo de polimorfismo:

clase animal {
    sonido público vacío() {
        System.out.println("El animal emite un sonido");
    }
}

clase Cerdo extiende Animal {
    sonido público vacío() {
        System.out.println("El cerdo dice: pipí");
    }
}

clase Perro extiende Animal {
    sonido público vacío() {
        System.out.println("El perro dice: guau");
    }
}clase principal {
    público estático vacío principal (String [] argumentos) {
        Animal miAnimal = nuevo Animal();
        Animal miCerdo = nuevo Cerdo();
        Animal miPerro = nuevo Perro();

        miAnimal.sonido();
        miPig.sonido();
        miPerro.sonido();
    }
}

En este ejemplo, la clase Main crea objetos de diferentes tipos, pero todos se tratan como instancias de la clase Animal. Esto demuestra polimorfismo, ya que el método sound se comporta de manera diferente según el tipo de objeto que lo invoca.

Conclusión

La herencia y el polimorfismo son conceptos clave en la programación orientada a objetos y se utilizan ampliamente en Java para crear código reutilizable y sistemas extensibles. Al comprender y aplicar estos conceptos, los desarrolladores pueden escribir código más limpio, más modular y más fácil de mantener.

Se espera que este curso de Java le brinde una comprensión sólida de estos conceptos, lo que le permitirá aplicarlos en escenarios del mundo real y crear aplicaciones sólidas y eficientes.

Ahora responde el ejercicio sobre el contenido:

¿Cuál de las siguientes afirmaciones sobre la herencia en Java es correcta?

¡Tienes razón! Felicitaciones, ahora pasa a la página siguiente.

¡Tú error! Inténtalo de nuevo.

Imagen del artículo Herencia y polimorfismo en Java: palabra clave 'extiende'

Siguiente página del libro electrónico gratuito:

86Herencia y polimorfismo en Java: palabra clave 'extiende'

5 minutos

¡Obtén tu certificado para este curso gratis! descargando la aplicación Cursa y leyendo el libro electrónico allí. ¡Disponible en Google Play o App Store!

Disponible en Google Play Disponible en App Store

+ 6,5 millones
estudiantes

Certificado gratuito y
válido con código QR

48 mil ejercicios
gratis

Calificación de 4.8/5
en tiendas de aplicaciones

Cursos gratuitos de
vídeo, audio y texto.