13. Herança e Polimorfismo em Java

A programação orientada a objetos (POO) é um paradigma de programação que utiliza objetos e suas interações para projetar e programar aplicações. Java é uma linguagem de programação que suporta plenamente a POO, e dois dos seus conceitos fundamentais são herança e polimorfismo. Esses conceitos permitem a criação de código mais modular, flexível e reutilizável.

Herança em Java

Herança é um mecanismo pelo qual uma nova classe, conhecida como subclasse, pode herdar campos e métodos de outra classe, chamada de superclasse. A herança permite que as subclasses tenham um ponto de partida comum, compartilhando características e comportamentos, evitando assim a duplicação de código.

class Veiculo { protected String marca; public void buzinar() { System.out.println("Beep! Beep!"); } } class Carro extends Veiculo { private int numeroDePortas; public void exibirInformacoes() { System.out.println("Marca: " + marca + ", Portas: " + numeroDePortas); } }

No exemplo acima, a classe Carro herda da classe Veiculo. Isso significa que Carro pode acessar o campo marca e o método buzinar() da classe Veiculo. A palavra-chave extends é usada para estabelecer essa relação de herança em Java.

Polimorfismo em Java

Polimorfismo é a capacidade de um objeto ser referenciado de várias formas. Mais especificamente, é a habilidade de um método ser implementado de várias formas diferentes. Em Java, o polimorfismo pode ser alcançado através do uso de métodos sobrescritos e sobrecarregados.

Um método sobrescrito é aquele que é herdado de uma superclasse e redefinido na subclasse. Isso permite que a subclasse forneça uma implementação específica para esse método. A anotação @Override é comumente usada para indicar que um método está sendo sobrescrito.

class Veiculo { public void buzinar() { System.out.println("Beep! Beep!"); } } class Carro extends Veiculo { @Override public void buzinar() { System.out.println("Honk! Honk!"); } }

No exemplo acima, a classe Carro sobrescreve o método buzinar() da classe Veiculo, fornecendo sua própria implementação.

Polimorfismo também permite que um objeto de uma subclasse seja tratado como se fosse um objeto de sua superclasse. Isso é particularmente útil quando se lida com coleções de objetos que compartilham uma classe base comum.

Veiculo meuVeiculo = new Carro(); meuVeiculo.buzinar(); // Chama o método buzinar() da classe Carro

Aqui, meuVeiculo é uma referência do tipo Veiculo, mas aponta para uma instância de Carro. Quando o método buzinar() é chamado, a implementação sobrescrita em Carro é executada.

Considerações Importantes sobre Herança e Polimorfismo

Embora a herança e o polimorfismo sejam poderosos, eles devem ser usados com cautela. Herança excessiva ou inadequada pode levar a uma estrutura de classes confusa e difícil de manter. É importante seguir o princípio do "menor conhecimento" e expor apenas o necessário. Além disso, a composição muitas vezes pode ser uma alternativa mais flexível à herança.

O polimorfismo, por outro lado, quando usado sabiamente, pode tornar o código mais genérico e reutilizável. Por exemplo, uma função que opera em objetos do tipo Veiculo pode funcionar com qualquer subclasse de Veiculo, sem precisar conhecer os detalhes específicos de cada subclasse.

Conclusão

Herança e polimorfismo são fundamentais na programação orientada a objetos em Java. Eles permitem que os desenvolvedores construam sistemas extensíveis e reutilizáveis, reduzindo a redundância de código e melhorando a manutenção. Ao mesmo tempo, é essencial usar esses conceitos de forma ponderada e entender suas implicações no design do software. Com a prática e experiência, os programadores podem dominar o uso eficaz de herança e polimorfismo para criar aplicações robustas e flexíveis em Java.

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.

Imagem do artigo Herança e Polimorfismo em Java: Conceito de Herança

Próxima página do Ebook Gratuito:

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

5 minutos

Ganhe seu Certificado deste Curso Gratuitamente! ao baixar o aplicativo Cursa e ler o ebook por lá. Disponível na Google Play ou App Store!

Disponível no Google Play Disponível no App Store

+ de 6,5 milhões
de alunos

Certificado Gratuito e
Válido em todo o Brasil

48 mil exercícios
gratuitos

4,8/5 classificação
nas lojas de apps

Cursos gratuitos em
vídeo, áudio e texto