Herança e Polimorfismo em Java: Casting de Objetos

Capítulo 94

Tempo estimado de leitura: 4 minutos

+ Exercício
Audio Icon

Ouça em áudio

0:00 / 0:00

13.10. Herança e Polimorfismo em Java: Casting de Objetos

A herança e o polimorfismo são dois dos principais pilares da programação orientada a objetos (POO) e são fundamentais para a compreensão e o uso eficaz da linguagem Java. Vamos explorar esses conceitos e como o casting de objetos se encaixa nesse contexto.

Herança em Java

Herança é um mecanismo pelo qual uma classe pode herdar campos e métodos de outra classe. Em Java, isso é feito usando a palavra-chave extends. A classe que herda é chamada de subclasse ou classe derivada, enquanto a classe da qual ela herda é chamada de superclasse ou classe base.


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, além de ter seu próprio método latir().

Polimorfismo em Java

Polimorfismo é a capacidade de tratar objetos de subclasses como objetos de sua superclasse. Em outras palavras, um objeto de uma subclasse pode ser referenciado como se fosse um objeto de sua superclasse. Isso permite que métodos ou variáveis de tipos mais genéricos se refiram a instâncias de tipos mais específicos, proporcionando flexibilidade ao código.


Animal meuAnimal = new Cachorro();
meuAnimal.comer(); // Chama o método comer da classe Animal

Aqui, meuAnimal é uma variável do tipo Animal, mas ela está referenciando um objeto do tipo Cachorro. Isso é possível graças ao polimorfismo.

Continue em nosso aplicativo e ...
  • Ouça o áudio com a tela desligada
  • Ganhe Certificado após a conclusão
  • + de 5000 cursos para você explorar!
ou continue lendo abaixo...
Download App

Baixar o aplicativo

Casting de Objetos

Casting de objetos é o processo de converter uma instância de uma classe para uma instância de outra classe na hierarquia de herança. Em Java, casting pode ser explícito (upcasting) ou implícito (downcasting).

Upcasting

Upcasting é o casting de uma subclasse para uma superclasse, e é feito automaticamente pelo Java. É seguro porque a subclasse tem todos os métodos e campos da superclasse.


Cachorro cachorro = new Cachorro();
Animal animal = cachorro; // Upcasting implícito

Downcasting

Downcasting é o casting de uma superclasse para uma subclasse. Isso não é feito automaticamente, pois pode levar a erros em tempo de execução se o objeto não for realmente uma instância da subclasse. Portanto, deve ser feito explicitamente e, geralmente, após verificar o tipo com o operador instanceof.


Animal animal = new Cachorro();
if (animal instanceof Cachorro) {
    Cachorro cachorro = (Cachorro) animal; // Downcasting explícito
    cachorro.latir();
}

No exemplo acima, o downcasting é feito após verificar que animal é de fato uma instância de Cachorro. Após o downcasting, podemos chamar métodos específicos da classe Cachorro, como latir().

Importância do Casting

Casting é importante porque permite a flexibilidade de design. Por exemplo, você pode ter uma lista de objetos Animal que contém instâncias de Cachorro, Gato, ou qualquer outra subclasse de Animal. O casting permite que você trate cada objeto de acordo com sua classe específica quando necessário.

Considerações Finais

A herança e o polimorfismo são conceitos que andam de mãos dadas na programação orientada a objetos. Eles permitem a criação de uma estrutura de classes flexível e reutilizável. O casting de objetos, por sua vez, é uma ferramenta que permite manipular essa estrutura de forma poderosa, permitindo que o mesmo código trabalhe com diferentes tipos de objetos de uma maneira segura e controlada.

Em resumo, entender herança e polimorfismo é essencial para qualquer desenvolvedor Java. O casting de objetos é uma técnica avançada que, quando usada corretamente, pode tornar seu código mais flexível e poderoso. Lembre-se sempre de verificar o tipo do objeto antes de fazer um downcasting para evitar exceções em tempo de execução e garantir a segurança do seu código.

Com a prática e o entendimento desses conceitos, você estará bem equipado para criar aplicações robustas e manuteníveis em Java, aproveitando ao máximo as capacidades de POO que a linguagem oferece.

Agora responda o exercício sobre o conteúdo:

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

Você acertou! Parabéns, agora siga para a próxima página

Você errou! Tente novamente.

Upcasting é o processo de converter uma subclasse em uma superclasse, e é feito de forma automática e segura pelo Java, uma vez que a subclasse sempre contém todos os métodos e campos da superclasse.

Próximo capitúlo

Herança e Polimorfismo em Java: Método 'instanceof'

Arrow Right Icon
Capa do Ebook gratuito Aprenda programar em Java completo, da lógica de programação ao avançado
39%

Aprenda programar em Java completo, da lógica de programação ao avançado

5

(1)

238 páginas

Baixe o app para ganhar Certificação grátis e ouvir os cursos em background, mesmo com a tela desligada.