4.11. Sintaxis básica de Java: polimorfismo

El polimorfismo es uno de los cuatro pilares fundamentales de la programación orientada a objetos (OOP), junto con la encapsulación, la herencia y la abstracción. En Java, el polimorfismo permite hacer referencia a un objeto de múltiples formas, lo cual es crucial para la reutilización de código y la creación de sistemas flexibles y extensibles. En este capítulo, exploraremos el concepto de polimorfismo, cómo se manifiesta en Java y cómo puedes usarlo para mejorar tus programas.

¿Qué es el polimorfismo?

El polimorfismo, del griego "polys" (muchos) y "morphē" (forma), se refiere a la capacidad de un método, objeto o variable de representarse de varias maneras. En el contexto de Java, esto generalmente significa que una referencia de una clase principal puede apuntar a un objeto de una clase secundaria, lo que permite invocar métodos de tal manera que la implementación específica del método se determine en tiempo de ejecución (polimorfismo en tiempo de ejecución). ).

Tipos de polimorfismo en Java

Hay dos tipos principales de polimorfismo en Java:

  • Polimorfismo de compilación (o estático): También conocido como sobrecarga de métodos, ocurre cuando dos o más métodos en la misma clase tienen el mismo nombre, pero diferentes parámetros. La decisión sobre qué método se llamará se toma en tiempo de compilación.
  • Polimorfismo en tiempo de ejecución (o dinámico): también conocido como anulación de método, ocurre cuando una clase secundaria proporciona una implementación específica de un método que ya está proporcionado por su clase principal o interfaz. La decisión sobre qué implementación del método se ejecutará se toma en tiempo de ejecución.

Polimorfismo en tiempo de ejecución

Para comprender mejor el polimorfismo en tiempo de ejecución, considere el siguiente ejemplo:


clase animal {
    charla vacía() {
        System.out.println("El animal emite un sonido");
    }
}

clase Perro extiende Animal {
    charla vacía() {
        System.out.println("El perro ladra: ¡Guau!");
    }
}

clase Gato extiende Animal {
    charla vacía() {
        System.out.println("El gato maúlla: ¡Miau!");
    }
}

clase pública PruebaPolimorfismo {
    público estático vacío principal (String [] argumentos) {
        Animal miAnimal = nuevo Animal();
        Animal miPerro = nuevo Perro();
        Animal miGato = nuevo Gato();

        miAnimal.talk();
        miPerro.talk();
        miCat.talk();
    }
}

En este ejemplo, la clase Animal tiene un método talk(), que es anulado por las clases Perro y Gato. código>. En el método main, creamos tres referencias de tipo Animal, pero dos de ellas apuntan a objetos de subclases específicas. Cuando se invoca el método talk() en las referencias meuCachorro y meuCat, las implementaciones específicas de Dog y < code >Cat se llaman, respectivamente. Esto demuestra polimorfismo en tiempo de ejecución.

Beneficios del polimorfismo

El polimorfismo ofrece varios beneficios, entre ellos:

  • Flexibilidad: permite que los programas llamen a métodos que no necesariamente saben cómo se implementan en el momento de la compilación.
  • Reutilización de código: Con el polimorfismo, es posible escribir código que funcione con clases que aún no se han creado.
  • Mantenibilidad: el polimorfismo le ayuda a crear código que es más fácil de entender y mantener.

Interfaces y polimorfismo

Las interfaces en Java son otro mecanismo que promueve el polimorfismo. Una interfaz es un contrato que especifica qué métodos debe implementar una clase, sin proporcionar la implementación en sí. Cuando una clase implementa una interfaz, cualquier referencia de tipo de esa interfaz puede apuntar a un objeto de esa clase.


Interfaz animal {
    charla vacía();
}

clase Perro implementa Animal {
    hablar vacío público () {
        System.out.println("El perro ladra: ¡Guau!");
    }
}

clase Gato implementa Animal {
    hablar vacío público () {
        System.out.println("El gato maúlla: ¡Miau!");
    }
}

clase pública TestInterfacePolymorfismo {
    público estático vacío principal (String [] argumentos) {
        Animal miPerro = nuevo Perro();
        Animal miGato = nuevo Gato();

        miPerro.talk();
        miCat.talk();
    }
}

En este ejemplo, la interfaz Animal define un método talk() que debe ser implementado por cualquier clase que lo implemente. Las clases Dog y Cat proporcionan sus propias implementaciones del método talk(). En el método main, se utilizan referencias de tipo Animal para invocar el mMétodo talk() en objetos Dog y Cat, lo que demuestra polimorfismo.

Consideraciones finales

El polimorfismo es una poderosa herramienta en la programación Java, que le permite escribir código que es tanto general como específico. Es esencial para crear aplicaciones robustas y flexibles. Al comprender y aplicar correctamente el polimorfismo, podrá aprovechar al máximo el paradigma orientado a objetos, creando sistemas que sean fáciles de ampliar y mantener en el tiempo.

Ahora responde el ejercicio sobre el contenido:

_¿Cuál de los siguientes es un ejemplo de polimorfismo en tiempo de ejecución en Java?

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

¡Tú error! Inténtalo de nuevo.

Imagen del artículo Sintaxis básica de Java: interfaces 16

Siguiente página del libro electrónico gratuito:

Sintaxis básica de Java: interfaces

Tiempo estimado de lectura: 4 minutos

Descarga la aplicación para obtener una certificación gratuita y escuchar cursos en segundo plano, incluso con la pantalla apagada.

+ 9 millones
estudiantes

Certificado gratuito y
válido con código QR

60 mil ejercicios
gratis

Calificación de 4.8/5
en tiendas de aplicaciones

Cursos gratuitos de
vídeo y audiolibros