Saltar al contenido principal
Documentos
Java keywordsMatrices JavaProgramación orientada a objetos en JavaJava File HandlingIntroducción a JavaConceptos básicos del lenguaje Java

Polimorfismo Java

El polimorfismo en Java es un concepto básico de la programación orientada a objetos (POO) que permite tratar a los objetos como instancias de su clase padre. Facilita la flexibilidad y la capacidad de definir métodos de múltiples formas. El polimorfismo se consigue principalmente mediante la sobreescritura y la sobrecarga de métodos.

Utilización

El polimorfismo se utiliza para realizar una misma acción de distintas formas. Permite implementar el envío dinámico de métodos, en el que el método a ejecutar se determina en tiempo de ejecución. Esto es beneficioso para implantar una base de código más limpia y fácil de mantener.

Tipos de polimorfismo

  1. Polimorfismo en tiempo de compilación (sobrecarga de métodos): Se consigue definiendo varios métodos con el mismo nombre pero diferentes parámetros dentro de la misma clase.
  2. Polimorfismo en tiempo de ejecución (anulación de métodos): Se consigue cuando una subclase proporciona una implementación específica de un método ya definido en su superclase.

Ejemplos

Ejemplo 1: Sobrecarga de métodos


public class OverloadingExample {
    public int add(int a, int b) {
        return a + b;
    }

    public double add(double a, double b) {
        return a + b;
    }

    public static void main(String[] args) {
        OverloadingExample obj = new OverloadingExample();
        System.out.println("Sum of integers: " + obj.add(5, 10));
        System.out.println("Sum of doubles: " + obj.add(5.5, 10.5));
    }
}
    

En este ejemplo, el método add se sobrecarga con dos listas de parámetros diferentes. Se llama al método apropiado en función de los argumentos pasados.

Ejemplo 2: Anulación de métodos


class Animal {
    public void sound() {
        System.out.println("Animal makes a sound");
    }
}

class Dog extends Animal {
    @Override
    public void sound() {
        System.out.println("Dog barks");
    }
}

public class OverridingExample {
    public static void main(String[] args) {
        Animal myAnimal = new Dog();
        myAnimal.sound(); // Outputs "Dog barks"
    }
}
    

Aquí, la clase Dog anula el método sound de la clase Animal. El método sound de la clase Dog se invoca en tiempo de ejecución.

Consejos y buenas prácticas

  • Utiliza juiciosamente la sobrecarga de métodos: Asegúrate de que los métodos sobrecargados realizan funciones similares para evitar confusiones.
  • Anula los métodos adecuadamente: Utiliza la anotación @Override para indicar que un método está destinado a sobrescribir un método de una superclase, lo que ayuda a evitar errores.
  • Aprovecha el polimorfismo para la flexibilidad: Utiliza el polimorfismo para escribir código más genérico y reutilizable.
  • Comprender la resolución del método: Ten en cuenta que la resolución de métodos anulados se produce en tiempo de ejecución, mientras que la de métodos sobrecargados se produce en tiempo de compilación.
  • Utiliza Interfaces y Clases Abstractas: Utiliza interfaces y clases abstractas para definir comportamientos comunes que puedan implementarse polimórficamente en distintas clases.

Aprende Java Essentials

Desarrolla tus conocimientos de Java desde la base y domina los conceptos de programación.
Empieza a aprender gratis