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.

Now answer the exercise about the content:

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

You are right! Congratulations, now go to the next page

You missed! Try again.

Next page of the Free Ebook:

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

Earn your Certificate for this Course for Free! by downloading the Cursa app and reading the ebook there. Available on Google Play or App Store!

Get it on Google Play Get it on App Store

+ 6.5 million
students

Free and Valid
Certificate with QR Code

48 thousand free
exercises

4.8/5 rating in
app stores

Free courses in
video, audio and text