Imagem do artigo Estrutura de classes e objetos em Java: Polimorfismo

11.7. Estrutura de classes e objetos em Java: Polimorfismo

Página 65 | Ouça em áudio

11.7 Estrutura de classes e objetos em Java: Polimorfismo

Polimorfismo é um conceito fundamental na programação orientada a objetos, e Java, sendo uma linguagem que adota este paradigma, oferece suporte completo a este conceito. Polimorfismo, que em grego significa "muitas formas", permite que objetos de diferentes classes sejam tratados como objetos de uma classe comum. No contexto de Java, isso significa que uma referência de classe pai pode apontar para um objeto de qualquer classe filha, permitindo que métodos sejam chamados sem que o sistema saiba antecipadamente qual a classe específica do objeto.

Entendendo o Polimorfismo

O polimorfismo pode ser implementado em Java de duas maneiras principais: polimorfismo de sobrecarga (overloading) e polimorfismo de sobrescrita (overriding).

  • Polimorfismo de sobrecarga: ocorre quando dois ou mais métodos na mesma classe têm o mesmo nome, mas parâmetros diferentes. A JVM determina qual método deve ser chamado com base nos parâmetros passados na chamada do método.
  • Polimorfismo de sobrescrita: ocorre quando uma classe filha fornece uma implementação específica para um método que já está definido em sua classe pai ou interface.

É o polimorfismo de sobrescrita que nos permite utilizar uma interface comum para interagir com diferentes tipos de objetos. Isso é extremamente útil no design de software, pois promove a flexibilidade e a reutilização de código.

Exemplo de Polimorfismo em Java

Considere o seguinte exemplo:

        class Animal {
            void speak() {
                System.out.println("Some sound");
            }
        }
        
        class Dog extends Animal {
            @Override
            void speak() {
                System.out.println("Woof woof");
            }
        }
        
        class Cat extends Animal {
            @Override
            void speak() {
                System.out.println("Meow");
            }
        }
        
        public class TestPolymorphism {
            public static void main(String[] args) {
                Animal myDog = new Dog();
                Animal myCat = new Cat();
                
                myDog.speak(); // Outputs "Woof woof"
                myCat.speak(); // Outputs "Meow"
            }
        }
    

Neste exemplo, a classe Animal tem um método speak(), que é sobrescrito pelas classes Dog e Cat. No método main, criamos referências de tipo Animal para objetos de tipos Dog e Cat. Quando chamamos o método speak() nessas referências, o método correspondente ao tipo real do objeto é invocado. Isso é polimorfismo em ação.

Benefícios do Polimorfismo

  • Flexibilidade: Permite que programas sejam escritos de forma mais geral e flexível.
  • Reutilização de código: Permite que o mesmo código seja usado para trabalhar com diferentes tipos de objetos.
  • Manutenção: Facilita a manutenção e a atualização de sistemas, pois mudanças em uma parte do código podem se propagar automaticamente para outras partes que usam o objeto.

Considerações Adicionais

Além de classes e herança, o polimorfismo em Java também pode ser utilizado com interfaces. Uma interface define um contrato que as classes devem seguir, mas não a implementação específica dos métodos. Isso significa que qualquer classe que implemente uma interface pode ser tratada como um tipo dessa interface, o que é outra forma de polimorfismo.

É importante notar que o polimorfismo tem algumas limitações e regras. Por exemplo, métodos estáticos não são polimórficos, pois eles pertencem à classe e não a instâncias de objetos. Além disso, o polimorfismo não se aplica a campos (variáveis de instância); apenas métodos são polimórficos em Java.

Conclusão

O polimorfismo é um conceito poderoso que oferece muitos benefícios no design e na implementação de software. Ele permite que programas sejam escritos de forma mais geral e flexível, facilita a reutilização de código e torna sistemas mais fáceis de manter. Ao dominar o polimorfismo, os programadores podem escrever código mais eficiente e robusto, aproveitando ao máximo as capacidades da programação orientada a objetos em Java.

Agora responda o exercício sobre o conteúdo:

_Qual das seguintes afirmações sobre polimorfismo em Java é verdadeira?

Você acertou! Parabéns, agora siga para a próxima página

Você errou! Tente novamente.

Imagem do artigo Estrutura de classes e objetos em Java: Interfaces

Próxima página do Ebook Gratuito:

66Estrutura de classes e objetos em Java: Interfaces

5 minutos

Ganhe seu Certificado deste Curso Gratuitamente! ao baixar o aplicativo Cursa e ler o ebook por lá. Disponível na Google Play ou App Store!

Disponível no Google Play Disponível no App Store

+ de 6,5 milhões
de alunos

Certificado Gratuito e
Válido em todo o Brasil

48 mil exercícios
gratuitos

4,8/5 classificação
nas lojas de apps

Cursos gratuitos em
vídeo, áudio e texto