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.