11.7. Estrutura de classes e objetos em Java: Polimorfismo

Página 65

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.

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

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

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

Vous avez raté! Essayer à nouveau.

Page suivante de lebook gratuit :

6611.8. Estrutura de classes e objetos em Java: Interfaces

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