AULA 10
MÓDULO 3
polimorfismo
⏱ 45 min
Polimorfismo I: Sobrecarga
Polimorfismo de compilação: o compilador escolhe pela assinatura. Sobrecarga com varargs. Quando sobrecarregar vs quando usar nome diferente.
sobrecargaassinaturavarargscompile-timepolimorfismo estático
Polimorfismo de compilação — sobrecarga
Polimorfismo estático: o compilador decide qual versão do método chamar com base na assinatura. Mesmo nome, diferentes parâmetros.
você já viu isso
Em C, você usaria calcularAreaCirculo() e calcularAreaRetangulo(). Java permite calcularArea() com assinaturas diferentes — o compilador escolhe a versão certa em tempo de compilação.ASSINATURA = nome + tipos dos parâmetros (retorno NÃO conta)
calcularArea(double raio)
circulo
calcularArea(double base, double altura)
retangulo
calcularArea(double a, double b, double c)
triangulo
Varargs — número variável de argumentos
tipo... nome permite passar 0 ou mais argumentos. Java cria um array internamente. Deve ser o último parâmetro do método.
quando sobrecarregar
Sobrecarregue quando o mesmo conceito tem variações de entrada. NÃO sobrecarregue para criar métodos que fazem coisas diferentes.Sobrecarga vs renomear
Se o resultado é o mesmo conceito com entrada diferente, sobrecarregue. Se é conceito diferente, use nome diferente.
java
// Sobrecarga — mesmo nome, assinaturas diferentes public class Calculadora { // Compilador escolhe baseado nos parâmetros public static double calcularArea(double raio) { return Math.PI * raio * raio; } public static double calcularArea(double base, double altura) { return base * altura; } // Fórmula de Heron — área do triângulo public static double calcularArea(double a, double b, double c) { double s = (a + b + c) / 2; return Math.sqrt(s * (s-a) * (s-b) * (s-c)); } // Varargs — qualquer quantidade de inteiros public static int somar(int... numeros) { int total = 0; for (int n : numeros) total += n; return total; } } // Compilador resolve automaticamente Calculadora.calcularArea(5.0); // circulo: 78.53 Calculadora.calcularArea(4.0, 6.0); // retangulo: 24.0 Calculadora.calcularArea(3.0, 4.0, 5.0); // triangulo: 6.0 Calculadora.somar(1, 2, 3, 4, 5); // varargs: 15
quiz · aula 10
Teste seus conhecimentos em Java
0/3 respondidas
QUESTÃO 01
O compilador resolve sobrecarga com base em...
QUESTÃO 02
Varargs double... numeros pode ser chamado com...
QUESTÃO 03
Por que NÃO sobrecarregar processar(Pedido) e processar(String json)?
0/3