13.2. Herança e Polimorfismo em Java: Palavra-chave 'extends'

Página 86

13.2 Herança e Polimorfismo em Java: Palavra-chave 'extends'

A herança é um dos pilares fundamentais da programação orientada a objetos (OOP). Em Java, a herança permite que uma classe herde campos e métodos de outra classe, promovendo a reutilização de código e a criação de uma relação hierárquica entre as classes. A palavra-chave extends é usada para estabelecer essa relação de herança entre duas classes.

Conceito de Herança

Na herança, temos duas entidades principais: a classe pai (ou superclasse) e a classe filha (ou subclasse). A classe filha herda os atributos e comportamentos da classe pai, mas também pode definir seus próprios membros e comportamentos. Isso significa que a classe filha é uma especialização da classe pai, onde ela não apenas possui os traços da classe pai, mas também adiciona suas características únicas.

Usando a palavra-chave 'extends'

Para implementar a herança em Java, usamos a palavra-chave extends na declaração da classe filha. Vejamos um exemplo simples:


class Animal {
    void comer() {
        System.out.println("Este animal come");
    }
}

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

No exemplo acima, Cachorro é uma subclasse de Animal. Isso significa que Cachorro herda o método comer() de Animal e também define seu próprio método latir(). Um objeto da classe Cachorro pode chamar ambos os métodos.

Polimorfismo e Herança

Polimorfismo é outro conceito chave na OOP que está intimamente relacionado à herança. Significa "muitas formas" e permite que objetos sejam tratados como instâncias de suas classes pai ao invés de suas classes reais. Em Java, isso é possível graças à herança e ao fato de que uma variável de referência de superclasse pode apontar para um objeto de subclasse. Isso permite que métodos sejam chamados de forma polimórfica.

Por exemplo:


Animal meuAnimal = new Cachorro();
meuAnimal.comer(); // Chama o método da classe Animal
// meuAnimal.latir(); // Erro de compilação: o tipo Animal não possui o método latir

Aqui, a variável meuAnimal é do tipo Animal, mas aponta para uma instância de Cachorro. Isso permite que o método comer() seja chamado polimorficamente. No entanto, se tentarmos chamar latir() através de meuAnimal, receberemos um erro de compilação, pois o compilador só conhece os métodos definidos na classe Animal.

Sobrescrita de Métodos

Uma característica importante da herança em Java é a capacidade de sobrescrever métodos. Isso significa que uma subclasse pode fornecer sua própria implementação de um método que já está definido em sua superclasse. Para sobrescrever um método, a subclasse deve definir um método com a mesma assinatura que o método da superclasse.


class Gato extends Animal {
    @Override
    void comer() {
        System.out.println("O gato come peixe");
    }
}

No exemplo acima, a classe Gato sobrescreve o método comer() da classe Animal. A anotação @Override é opcional, mas é uma boa prática usá-la, pois ela informa ao compilador e aos desenvolvedores que o método é uma sobrescrita intencional.

Polimorfismo e Sobrescrita de Métodos

Quando um método é sobrescrito, o polimorfismo garante que a versão sobrescrita do método seja chamada quando o objeto é tratado como uma instância da superclasse. Isso é uma parte fundamental do que torna o polimorfismo tão poderoso em Java.


Animal meuGato = new Gato();
meuGato.comer(); // Chama o método sobrescrito da classe Gato

Neste caso, mesmo que meuGato seja do tipo Animal, o método comer() que é chamado é o da classe Gato, porque o objeto real é uma instância de Gato.

Considerações Finais

A herança e o polimorfismo são conceitos fundamentais que permitem que as classes Java sejam reutilizáveis, extensíveis e gerenciáveis. A palavra-chave extends é a porta de entrada para a herança, enquanto o polimorfismo permite que objetos de diferentes classes sejam tratados de maneira uniforme. Compreender esses conceitos é essencial para qualquer programador que deseja dominar Java e desenvolver sistemas robustos e flexíveis.

Além disso, é importante estar ciente das limitações e considerações ao usar herança, como o problema do "diamante" em heranças múltiplas (que Java resolve ao não permitir herança múltipla de classes) e a importância do encapsulamento para manter uma hierarquia de classes bem definida e segura.

Em resumo, a herança e o polimorfismo são ferramentas poderosas que, quando usadas corretamente, podem significativamente melhorar o design e a manutenção do software. A palavra-chave extends é apenas o começo de um vasto mundo de possibilidades que a programação orientada a objetos oferece.

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

Qual das seguintes afirmações sobre herança e polimorfismo em Java está correta?

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

Vous avez raté! Essayer à nouveau.

Page suivante de lebook gratuit :

8713.3. Herança e Polimorfismo em Java: Sobrescrita de Métodos (Method Overriding)

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