Open In Colab

1.6. Polimorfismo en programación#

El polimorfismo es un concepto importante en la programación orientada a objetos que se refiere a la capacidad de objetos de diferentes clases de responder al mismo mensaje de diferentes maneras.

En Python, el polimorfismo se implementa a través de métodos con el mismo nombre en diferentes clases, pero con comportamientos diferentes.

Hay dos tipos principales de polimorfismo:

  1. Polimorfismo de sobreescritura (override): Este tipo de polimorfismo ocurre cuando una subclase proporciona una implementación específica de un método que ya está definido en su clase base. La subclase “sobrescribe” el comportamiento del método de la clase base.

  2. Polimorfismo de sobrecarga (overload): Aunque Python no admite la sobrecarga de métodos (definir varios métodos con el mismo nombre pero con diferentes parámetros), es posible simularla usando parámetros opcionales o valores predeterminados.

Descripción de la imagen

1.6.1. Polimorfismo de Sobreescritura:#

class Animal:
    def hacer_sonido(self):
        pass

class Perro(Animal):
    def hacer_sonido(self):
        return "¡Guau!"

class Gato(Animal):
    def hacer_sonido(self):
        return "¡Miau!"

# Crear instancias de las clases
perro = Perro()
gato = Gato()

# Llamar al método hacer_sonido en diferentes objetos
print(perro.hacer_sonido())  # Salida: ¡Guau!
print(gato.hacer_sonido())   # Salida: ¡Miau!
¡Guau!
¡Miau!

En este ejemplo, las clases Perro y Gato heredan de la clase base Animal. Cada una de ellas implementa su propio método hacer_sonido(), sobrescribiendo el comportamiento del método en la clase base.

1.6.2. Polimorfismo de Sobrecarga (Simulado):#

class Calculadora:
    def sumar(self, a, b, c=0):
        return a + b + c

# Crear instancia de la clase Calculadora
calc = Calculadora()

# Llamar al método sumar con diferentes números de argumentos
print(calc.sumar(1, 2))      # Salida: 3
print(calc.sumar(1, 2, 3))    # Salida: 6
3
6

En este ejemplo, el método sumar() de la clase Calculadora puede aceptar dos o tres argumentos. Si se llama con dos argumentos, se suman solo esos dos. Si se llama con tres argumentos, se suman los tres. Esto simula la sobrecarga de métodos, aunque Python no lo admite directamente como lo hacen algunos otros lenguajes de programación.