13.8. Herança e Polimorfismo em Java: Conceito de Polimorfismo

Página 92

13.8 Herança e Polimorfismo em Java: Conceito de Polimorfismo

O conceito de polimorfismo é um dos pilares fundamentais da programação orientada a objetos (POO), e Java, sendo uma linguagem que adota esse paradigma, oferece suporte completo a essa característica. O termo polimorfismo vem do grego "polys", que significa muitos, e "morphē", que significa forma. Em programação, isso se refere à capacidade de uma variável, função ou objeto de assumir várias formas.

Polimorfismo em Java

Em Java, o polimorfismo se manifesta principalmente de duas maneiras: polimorfismo de sobrecarga (overloading) e polimorfismo de substituição (overriding). O primeiro refere-se à capacidade de ter várias funções com o mesmo nome mas com diferentes listas de parâmetros dentro da mesma classe. O segundo, que é o foco deste texto, está relacionado com a herança e permite que uma classe filha forneça uma implementação específica de um método que já é fornecido por uma de suas classes pais ou superclasses.

Herança e Polimorfismo

A herança permite que uma nova classe, conhecida como subclasse, herde campos e métodos de outra classe, chamada de superclasse. O polimorfismo de substituição entra em jogo quando uma subclasse redefine um método da superclasse. Isso permite que a subclasse especialize ou modifique o comportamento do método herdado. Quando um objeto da subclasse é utilizado, o método redefinido é o que será chamado, mesmo que a referência seja do tipo da superclasse.

Exemplo de Polimorfismo


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

class Cachorro extends Animal {
    @Override
    void som() {
        System.out.println("O cachorro late");
    }
}

class Gato extends Animal {
    @Override
    void som() {
        System.out.println("O gato mia");
    }
}

public class TestePolimorfismo {
    public static void main(String[] args) {
        Animal meuAnimal = new Animal();
        Animal meuCachorro = new Cachorro();
        Animal meuGato = new Gato();

        meuAnimal.som(); // Saída: O animal faz um som
        meuCachorro.som(); // Saída: O cachorro late
        meuGato.som(); // Saída: O gato mia
    }
}

No exemplo acima, a classe Animal possui um método som() que é redefinido (sobrescrito) nas classes Cachorro e Gato. Embora as referências meuCachorro e meuGato sejam do tipo Animal, os métodos chamados são aqueles das classes reais dos objetos, ou seja, Cachorro e Gato, respectivamente. Isso é polimorfismo em ação.

Benefícios do Polimorfismo

O polimorfismo traz diversos benefícios para o desenvolvimento de software, incluindo:

  • Flexibilidade: Permite escrever código que pode trabalhar com objetos de diferentes tipos e classes.
  • Reutilização de código: O mesmo código pode ser usado para interagir com objetos de diferentes classes que são derivadas de uma mesma superclasse.
  • Manutenibilidade: Facilita a manutenção e a atualização do código, uma vez que mudanças em uma superclasse podem ser automaticamente herdadas pelas subclasses.

Interfaces e Polimorfismo

Além da herança de classes, o polimorfismo em Java também pode ser alcançado através de interfaces. Uma interface define um contrato que as classes concretas devem seguir, especificando métodos que devem ser implementados. Uma vez que uma classe implementa uma interface, qualquer objeto dessa classe pode ser referenciado como sendo do tipo da interface. Isso permite que diferentes classes que implementam a mesma interface sejam tratadas de forma polimórfica.


interface Animal {
    void som();
}

class Cachorro implements Animal {
    @Override
    public void som() {
        System.out.println("O cachorro late");
    }
}

class Gato implements Animal {
    @Override
    public void som() {
        System.out.println("O gato mia");
    }
}

public class TesteInterfacePolimorfismo {
    public static void main(String[] args) {
        Animal meuCachorro = new Cachorro();
        Animal meuGato = new Gato();

        meuCachorro.som(); // Saída: O cachorro late
        meuGato.som(); // Saída: O gato mia
    }
}

No exemplo acima, Animal é uma interface, e as classes Cachorro e Gato implementam essa interface. Isso permite que objetos de ambas as classes sejam referenciados como objetos do tipo Animal e que o código possa interagir com eles de maneira polimórfica.

Considerações Finais

O polimorfismo é um conceito poderoso que permite a construção de sistemas flexíveis e facilmente extensíveis. Em Java, a implementação de polimorfismo é direta e natural, graças ao seu suporte robusto à programação orientada a objetos. Compreender e aplicar corretamente o polimorfismo é essencial para qualquer desenvolvedor Java que deseje criar códigos reutilizáveis, manuteníveis e escaláveis.

Répondez maintenant à l’exercice sur le contenu :

Qual das seguintes afirmações melhor descreve o polimorfismo de substituição em Java, conforme explicado no texto?

Tu as raison! Félicitations, passez maintenant à la page suivante

Vous avez raté! Essayer à nouveau.

Page suivante de lebook gratuit :

9313.9. Herança e Polimorfismo em Java: Polimorfismo em tempo de execução (Runtime Polymorphism)

Obtenez votre certificat pour ce cours gratuitement ! en téléchargeant lapplication Cursa et en lisant lebook qui sy trouve. Disponible sur Google Play ou App Store !

Get it on Google Play Get it on App Store

+ 6,5 millions
d'étudiants

Certificat gratuit et
valide avec QR Code

48 mille exercices
gratuits

Note de 4,8/5 dans les
magasins d'applications

Cours gratuits en
vidéo, audio et texte