AFF Education Construa seu Futuro

Aula 48 - Métodos Personalizados

Sobrecarga de Métodos

Java permite ter múltiplos métodos com o mesmo nome, mas com parâmetros diferentes. Isso é chamado de sobrecarga de métodos:

public class SobrecargaMetodos {
    public static void main(String[] args) {
        // Chamando método para calcular área do quadrado
        double areaQuadrado = calcularArea(5);
        System.out.println("Área do quadrado: " + areaQuadrado);
        
        // Chamando método para calcular área do retângulo
        double areaRetangulo = calcularArea(5, 10);
        System.out.println("Área do retângulo: " + areaRetangulo);
        
        // Chamando método para calcular área do trapézio
        double areaTrapezio = calcularArea(6, 8, 5);
        System.out.println("Área do trapézio: " + areaTrapezio);
        
        // Outra sobrecarga: método que aceita diferentes tipos
        imprimirInfo("Texto de teste");
        imprimirInfo(42);
        imprimirInfo(3.14);
        imprimirInfo(true);
    }
    
    // Método para calcular área de um quadrado
    public static double calcularArea(double lado) {
        return lado * lado;
    }
    
    // Método para calcular área de um retângulo
    public static double calcularArea(double base, double altura) {
        return base * altura;
    }
    
    // Método para calcular área de um trapézio
    public static double calcularArea(double baseMaior, double baseMenor, double altura) {
        return ((baseMaior + baseMenor) * altura) / 2;
    }
    
    // Métodos sobrecarregados que aceitam diferentes tipos
    public static void imprimirInfo(String texto) {
        System.out.println("\nTexto: " + texto);
    }
    
    public static void imprimirInfo(int numero) {
        System.out.println("Número inteiro: " + numero);
    }
    
    public static void imprimirInfo(double numero) {
        System.out.println("Número decimal: " + numero);
    }
    
    public static void imprimirInfo(boolean condicao) {
        System.out.println("Condição: " + condicao);
    }
}

Área do quadrado: 25.0

Área do retângulo: 50.0

Área do trapézio: 35.0

Texto: Texto de teste

Número inteiro: 42

Número decimal: 3.14

Condição: true

Observação: A sobrecarga de métodos permite que você use o mesmo nome para métodos que realizam ações semelhantes, mas com diferentes tipos ou quantidades de parâmetros. O compilador Java decide qual método chamar com base nos argumentos fornecidos.

Loop for de vetor com método personalizado

Nesse código, usamos um vetor de número inteiro e loop for para criar os números do vetor.

Em seguida, usamos um método personalizado para calcular a média dos números do vetor criado.

    import java.util.Scanner;
public class calcularMediaComVetores {
    public static void main(String[] args){

        Scanner entrada = new Scanner(System.in);
        int soma = 0;
        int[] numeros = new int[5];

        System.out.println("Digite 5 números para calcular a média");
        for (int i = 0; i < 5; i++) {
            System.out.print("Digite o número " + (i + 1) + " :");
            numeros[i] = entrada.nextInt(); // Supondo que se digite: 1, 2, 3, 4, 5
        }

        double media = calcularMedia(numeros);
        System.out.println("A média é: " + media);
        entrada.close();
    }

    public static double calcularMedia(int[] numeros) {
        int soma = 0;
        for (int numero : numeros) {
            soma += numero;
        }
        return (double) soma / numeros.length;
    }
}

Digite 5 números para calcular a média

Digite o número 1 : 1

Digite o número 1 : 2

Digite o número 1 : 3

Digite o número 1 : 4

Digite o número 1 : 5

A média é: 3.0

Exercícios

Teste seus conhecimentos sobre sobrecarga de métodos e métodos com vetores em Java:

1. O que é sobrecarga de métodos em Java?

2. O que o compilador Java usa para decidir qual método sobrecarregado chamar?

3. Qual é a vantagem de passar um vetor a um método personalizado em vez de processar diretamente no main?

4. Qual versão do método é chamada em calcularArea(5, 10)?

public static double calcularArea(double lado) {
    return lado * lado;
}
public static double calcularArea(double base, double altura) {
    return base * altura;
}

5. O que o programa abaixo imprime?

public static int somarNumeros(int... numeros) {
    int soma = 0;
    for (int numero : numeros) { soma += numero; }
    return soma;
}
System.out.println(somarNumeros(5, 10));
System.out.println(somarNumeros(1, 2, 3, 4, 5));

6. Qual é o resultado de calcularMedia para o vetor {2, 4, 6, 8, 10}?

public static double calcularMedia(int[] numeros) {
    int soma = 0;
    for (int numero : numeros) {
        soma += numero;
    }
    return (double) soma / numeros.length;
}

Exercícios de Aplicação AFF Education

Reforce o conteúdo desta aula com mais dois exercícios práticos:

1. Dado public static boolean ehPar(int n){ return n % 2 == 0; }, qual o valor de ehPar(7)?

2. Um método booleano como ehPar é especialmente útil para: