Prévia do material em texto
O polimorfismo é um conceito central da Programação Orientada a Objetos (POO) que permite que objetos de diferentes classes sejam tratados de maneira uniforme. Isso é alcançado através de duas principais formas: a sobrecarga de métodos (polimorfismo estático) e a sobrescrita de métodos (polimorfismo dinâmico).
Sobrecarga de Métodos
A sobrecarga de métodos ocorre quando uma classe define múltiplos métodos com o mesmo nome, mas com diferentes parâmetros. Isso permite que o mesmo método execute diferentes ações dependendo dos argumentos fornecidos durante a chamada do método. A sobrecarga é uma forma de polimorfismo estático, pois a decisão de qual método será chamado é tomada em tempo de compilação.
Por exemplo:
java
public class Calculadora {
public int somar(int a, int b) {
return a + b;
}
public double somar(double a, double b) {
return a + b;
}
public int somar(int a, int b, int c) {
return a + b + c;
}
}
Aqui, o método somar é sobrecarregado com diferentes tipos e números de parâmetros. Dependendo dos argumentos passados, a implementação apropriada do método é invocada.
Sobrescrita de Métodos
A sobrescrita de métodos ocorre quando uma subclasse fornece uma implementação específica para um método que já está definido na sua superclasse. Isso permite que uma subclasse ajuste ou expanda o comportamento de um método herdado para adequá-lo às suas necessidades. A sobrescrita é uma forma de polimorfismo dinâmico, pois a decisão de qual método será executado é tomada em tempo de execução.
Por exemplo:
java
public class Animal {
public void fazerSom() {
System.out.println("O animal faz um som.");
}
}
public class Cachorro extends Animal {
@Override
public void fazerSom() {
System.out.println("O cachorro late.");
}
}
public class Gato extends Animal {
@Override
public void fazerSom() {
System.out.println("O gato mia.");
}
}
Nesse caso, tanto Cachorro quanto Gato sobrescrevem o método fazerSom da classe Animal. Quando o método fazerSom é chamado em uma instância de Cachorro ou Gato, a implementação específica da subclasse é executada.
Aplicações do Polimorfismo
O polimorfismo é amplamente utilizado para permitir que programas lidem de maneira flexível e extensível com diferentes tipos de objetos. Por exemplo, em uma aplicação de processamento gráfico, uma classe base Forma poderia ter subclasses Circulo, Quadrado e Triangulo, cada uma com sua própria implementação do método desenhar. Um método pode ser projetado para aceitar um parâmetro Forma e, graças ao polimorfismo, desenhar qualquer tipo de forma passada a ele.
Pergunta:
Qual a diferença entre sobrecarga e sobrescrita de métodos?
Resposta:
A sobrecarga de métodos permite definir múltiplos métodos com o mesmo nome, mas com diferentes parâmetros em uma mesma classe (polimorfismo estático), enquanto a sobrescrita de métodos permite que uma subclasse forneça uma implementação específica para um método definido na superclasse (polimorfismo dinâmico).