Polimorfismo em Programação Orientada a Objetos

O que é Polimorfismo?

Polimorfismo é um dos pilares da Programação Orientada a Objetos (POO) que permite que objetos de diferentes classes possam ser tratados como objetos da mesma classe base. O termo “polimorfismo” vem do grego e significa…


This content originally appeared on DEV Community and was authored by Emanoel Carvalho

O que é Polimorfismo?

Polimorfismo é um dos pilares da Programação Orientada a Objetos (POO) que permite que objetos de diferentes classes possam ser tratados como objetos da mesma classe base. O termo "polimorfismo" vem do grego e significa "muitas formas". Em programação, isso se refere à capacidade de uma única interface (ou método) operar em diferentes tipos de objetos.

Existem dois tipos principais de polimorfismo:

  1. Polimorfismo em Tempo de Compilação (ou Sobrecarga): Ocorre quando dois ou mais métodos têm o mesmo nome, mas diferentes parâmetros (assinaturas).
  2. Polimorfismo em Tempo de Execução (ou Sobrescrita): Ocorre quando um método é redefinido em uma subclasse e pode ser chamado através de uma referência da superclasse.

Por que Usar Polimorfismo?

O polimorfismo é útil por várias razões:

  • Flexibilidade: Permite que o mesmo código funcione com diferentes tipos de objetos, promovendo a extensibilidade.
  • Reutilização de Código: Facilita o uso de interfaces e classes base, permitindo que novas classes sejam adicionadas sem modificar o código existente.
  • Melhoria na Manutenção: Torna o código mais fácil de entender e manter ao permitir que as classes compartilhem comportamentos comuns.

Exemplos de Polimorfismo em Java

1. Polimorfismo em Tempo de Execução (Sobrescrita de Métodos)

Vamos criar um exemplo onde temos uma classe base Animal e subclasses Cachorro e Gato. Cada subclasse implementa seu próprio método fazerSom.

// Superclasse
public class Animal {
    public void fazerSom() {
        System.out.println("O animal faz um som.");
    }
}

// Subclasse Cachorro
public class Cachorro extends Animal {
    @Override
    public void fazerSom() {
        System.out.println("O cachorro faz au au.");
    }
}

// Subclasse Gato
public class Gato extends Animal {
    @Override
    public void fazerSom() {
        System.out.println("O gato faz miau.");
    }
}

Usando Polimorfismo em Tempo de Execução

public class Main {
    public static void main(String[] args) {
        Animal meuAnimal;

        // Polimorfismo: um objeto do tipo Cachorro tratado como Animal
        meuAnimal = new Cachorro();
        meuAnimal.fazerSom(); // Saída: O cachorro faz au au.

        // Polimorfismo: um objeto do tipo Gato tratado como Animal
        meuAnimal = new Gato();
        meuAnimal.fazerSom(); // Saída: O gato faz miau.
    }
}

Saída Esperada:

O cachorro faz au au.
O gato faz miau.

2. Polimorfismo em Tempo de Compilação (Sobrecarga de Métodos)

A sobrecarga de métodos permite que você tenha vários métodos com o mesmo nome, mas com diferentes parâmetros.

public class Calculadora {
    // Sobrecarga do método somar
    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;
    }
}

Usando Polimorfismo em Tempo de Compilação

public class Main {
    public static void main(String[] args) {
        Calculadora calc = new Calculadora();

        // Chamando métodos sobrecarregados
        System.out.println("Soma de dois inteiros: " + calc.somar(5, 10));         // Saída: 15
        System.out.println("Soma de dois doubles: " + calc.somar(5.5, 10.5));     // Saída: 16.0
        System.out.println("Soma de três inteiros: " + calc.somar(5, 10, 15));    // Saída: 30
    }
}

Saída Esperada:

Soma de dois inteiros: 15
Soma de dois doubles: 16.0
Soma de três inteiros: 30

Considerações Finais

O polimorfismo é uma característica poderosa da Programação Orientada a Objetos que promove a flexibilidade, reutilização e manutenção do código. Ao permitir que diferentes classes sejam tratadas como uma classe base, o polimorfismo torna o código mais modular e extensível. O uso de sobrescrita de métodos e sobrecarga de métodos são técnicas fundamentais para implementar polimorfismo em Java e em outras linguagens orientadas a objetos.


This content originally appeared on DEV Community and was authored by Emanoel Carvalho


Print Share Comment Cite Upload Translate Updates
APA

Emanoel Carvalho | Sciencx (2024-10-16T23:47:40+00:00) Polimorfismo em Programação Orientada a Objetos. Retrieved from https://www.scien.cx/2024/10/16/polimorfismo-em-programacao-orientada-a-objetos/

MLA
" » Polimorfismo em Programação Orientada a Objetos." Emanoel Carvalho | Sciencx - Wednesday October 16, 2024, https://www.scien.cx/2024/10/16/polimorfismo-em-programacao-orientada-a-objetos/
HARVARD
Emanoel Carvalho | Sciencx Wednesday October 16, 2024 » Polimorfismo em Programação Orientada a Objetos., viewed ,<https://www.scien.cx/2024/10/16/polimorfismo-em-programacao-orientada-a-objetos/>
VANCOUVER
Emanoel Carvalho | Sciencx - » Polimorfismo em Programação Orientada a Objetos. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2024/10/16/polimorfismo-em-programacao-orientada-a-objetos/
CHICAGO
" » Polimorfismo em Programação Orientada a Objetos." Emanoel Carvalho | Sciencx - Accessed . https://www.scien.cx/2024/10/16/polimorfismo-em-programacao-orientada-a-objetos/
IEEE
" » Polimorfismo em Programação Orientada a Objetos." Emanoel Carvalho | Sciencx [Online]. Available: https://www.scien.cx/2024/10/16/polimorfismo-em-programacao-orientada-a-objetos/. [Accessed: ]
rf:citation
» Polimorfismo em Programação Orientada a Objetos | Emanoel Carvalho | Sciencx | https://www.scien.cx/2024/10/16/polimorfismo-em-programacao-orientada-a-objetos/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.