Apostilas em PDF – Como trabalhar com polimorfismo em Java

Baixe o material de estudo



baixar curso online

Fala, meus consagrados! Beleza?

O principal conceito relacionado ao polimorfismo vem da herança somada com os métodos sobrescritos na subclasse:

  • É a propriedade de duas ou mais classes derivadas de uma mesma superclasse responderem a mesma mensagem;
    • Mas cada uma de uma forma diferente;
  • Ocorre quando uma subclasse redefine um método existente na superclasse;
    • Métodos sobrescritos (overriding).

Vamos trabalhar com um exemplo prático.

Exemplo de superclasse Animal:

public class Animal {
    public void emitirSom() {
        System.out.println("Som do animal");
    }
}

Exemplo de subclasse Cachorro:

public class Cachorro extends Animal {
    @Override
    public void emitirSom() {
         System.out.println("Latindo...");
    }
}

Exemplo com as classes:

public class Main {
    public static void main(String[] args) {
        // Variável objeto animal apontando para um objeto da superclasse       Animal.
        Animal animal = new Animal();
        animal.emitirSom(); 
        // A mesma variável objeto animal agora apontando para um objeto da subclasse Cachorro.
        animal = new Cachorro();
        animal.emitirSom(); 
    }
}

Resultado da execução do código:

Som do animal
Latindo...

O método emitirSom() da superclasse Animal foi dado de herança para a subclasse Cachorro, porém, essa classe sobrescreveu, dando uma implementação mais específica.

Dentro do assunto de polimorfismos, temos o conceito de ligação dinâmica, também conhecida como ligação tardia ou ligação em tempo de execução. Essa ligação é um mecanismo pelo qual a chamada de um método é resolvida em tempo de execução. Isso é essencial para o polimorfismo, especialmente para o polimorfismo de inclusão.

O compilador Java não sabe qual versão do método será executada durante a compilação, pois isso depende do tipo real do objeto durante a execução. Quando um método é chamado em uma referência de objeto, a versão do método a ser executada é determinada pelo tipo real (não pelo tipo de referência) do objeto que foi criado em tempo de execução.

Exemplo de superclasse Animal:

public class Animal {
     public void emitirSom() {
        System.out.println("Som do animal");
     }
}

Exemplo de subclasse Cachorro:

public class Cachorro extends Animal {
    @Override
    public void emitirSom() {
        System.out.println("Latindo...");
    }
}

Exemplo com as classes:

public class Main {
    public static void main(String[] args) {
        Animal rex = new Cachorro();
        // Ligação dinâmica ocorre aqui.
        rex.emitirSom(); 
    }
}

Resultado da execução do código:

Som do animal
Latindo...

No código acima, quando rex.emitirSom() é chamado, o compilador não sabe ao certo qual método falar será executado. Em tempo de execução, a JVM identifica que rex (apesar de ser do tipo Animal) aponta para um objeto do tipo Cachorro e invoca o método falar sobrescrito na classe Cachorro. Isso é possível devido à ligação dinâmica e o comportamento dinâmico que resulta é o polimorfismo.

A ligação dinâmica e o polimorfismo trabalham juntos para garantir que o comportamento correto seja executado, não importa como as referências de objeto são tipadas. O polimorfismo permite a flexibilidade e a extensibilidade na arquitetura de um aplicativo, enquanto a ligação dinâmica garante que a implementação correta seja executada.

Espero que tenham gostado! 

Forte abraço e até a próxima jornada!

_________________________

Professor Rogerão Araújo


Quer ficar por dentro dos concursos públicos abertos e previstos pelo Brasil? Clique nos links abaixo:

CONCURSOS 2025

CONCURSOS ABERTOS

QUESTÕES DE CONCURSOS

Receba gratuitamente no seu celular as principais notícias do mundo dos concursos. Clique no link abaixo e inscreva-se:

WHATSAPP

TELEGRAM

Fonte: Gran Cursos Online

Download disponível – Como trabalhar com polimorfismo em Java



Baixar video aula

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *