Sobes.tech
Junior — Middle

Podes dar um exemplo que ilustre os diferentes tipos de polimorfismo na programação orientada a objetos?

sobes.tech IA

Resposta da IA

Na programação orientada a objetos, o polimorfismo permite que objetos de diferentes classes tratem chamadas de métodos com o mesmo nome de forma diferente.

1. Polimorfismo em tempo de compilação (polimorfismo estático):

  • Sobrecarga de métodos: vários métodos com um nome, mas diferentes parâmetros.
class Calculator {
    func add(a: Int, b: Int) -> Int {
        return a + b
    }
    func add(a: Double, b: Double) -> Double {
        return a + b
    }
}

2. Polimorfismo em tempo de execução (polimorfismo dinâmico):

  • Sobrescrita de métodos em subclasses.
class Animal {
    func sound() {
        print("Algum som")
    }
}

class Dog: Animal {
    override func sound() {
        print("Latido")
    }
}

class Cat: Animal {
    override func sound() {
        print("Miau")
    }
}

let animals: [Animal] = [Dog(), Cat()]
for animal in animals {
    animal.sound()  // Vai imprimir "Latido" e "Miau"
}

Assim, o polimorfismo permite usar uma interface única para trabalhar com diferentes tipos de objetos.