Sobes.tech
Junior — Middle

Qual é a diferença entre sobrescrever um método e sobrecarregar um método na programação orientada a objetos?

sobes.tech IA

Resposta da IA

Sobrescrita de método (overriding) é quando uma subclasse fornece a sua própria implementação de um método que já está definido na classe base. Isto permite alterar o comportamento do método para objetos da subclasse.

Sobrecarga de método (overloading) é a criação de vários métodos com o mesmo nome, mas diferentes parâmetros (tipos ou quantidade). Em algumas linguagens (por exemplo, Java, C++) isto é suportado ao nível da linguagem, enquanto que em Python a sobrecarga é implementada de forma diferente, por exemplo, através de parâmetros padrão ou verificações de tipos dentro do método.

Exemplo de sobrescrita:

class Animal:
    def sound(self):
        print("Algum som")

class Dog(Animal):
    def sound(self):
        print("Latido")

A sobrecarga em Python geralmente é imitada assim:

def add(a, b, c=None):
    if c is not None:
        return a + b + c
    return a + b

Assim, a sobrescrita altera o comportamento do método herdado, e a sobrecarga permite que um mesmo nome de método funcione com diferentes conjuntos de parâmetros.