Article image
Amanda Boza
Amanda Boza26/05/2023 06:45
Compartilhe

Desvendando a Herança em Java: Um mergulho no mundo da programação usando A Pequena Sereia como exemplo.

  • #Java

Hi there ✨

Ontem estreou o live action de "A Pequena Sereia" em todo Brasil e, enquanto isso, eu estudava "herança em Java". Então eu pensei: porque não juntar esses dois assuntos para ajudar quem tem dificuldade em compreender esse conceito e suas interações?

Para começar, precisando compreender que:

Herança em Java é o relacionamento entre classes em que uma classe chamada "subclasse" (ou filha) é uma extensão de uma "classe" (classe-mãe);
class Java extends Programação {}

Então, vamos analisar a proposta do filme:

Uma jovem sereia faz um acordo com uma bruxa do mar para trocar sua bela voz por pernas humanas para que possa descobrir o mundo acima da água e impressionar um príncipe.

A sereia "Ariel" é filha do rei Tritão, mas ela não é a única.

Ariel tem mais 6 irmãs: Attina, Alana, Adella, Aquata, Arista e Andrina.

Por mais que Ariel seja considerada a personagem mais importante e também tenha talentos diferente das irmãs, todas elas são sereias.

O que nos leva a entender que:

class Ariel extends Sereia {}

Mas não apenas ela! Todas as irmãs de Ariel são sereias, certo? Ou seja, todas elas compartilha de características comuns que a fazem ser o que elas são: sereias! Todas tem caldas, respiram debaixo d'água e moram no fundo do mar. Ou seja:

Todas as irmãs são subclasses da classe-mãe "sereia".

image

Se quisermos fazer um upcast, ou seja, subir mais nas heranças, tornando-as mais genéricas, podemos dizer que:

class Sereias extends SeresMarítimos {}

Ou seja, todos os seres do mar, junto com Ariel e suas irmãs, compartilham características similares. Úrsula, Sabidão, Sebastião e todas as outras criaturas que deixariam de existir caso o mar desaparecesse!

image

Então, Ariel se apaixona e pede para Úrsula a transforma em uma humana! E é aqui que encontramos um bug:

Sereias e humanas são seres distintos! Tem anatomias diferentes, forma de vida diferentes, e, por mais que compartilhem algumas características em comum, não podem ser as duas coisas ao mesmo tempo.

Em Java é a mesma coisa: uma classe não pode ter "herança múltipla". Em outras linguagens de programação como C++ e Python você pode atribuir herança múltipla para uma classe:

class Ariel (Sereia, Humana) : 
pass

Mas esse não é o caso aqui. Para Java, apenas existe a herança simples.

Ou seja: para ser humana, a classe Ariel precisou mesmo abrir mão de ser sereia.

Isso não significa que a classe "sereias" e a classe "humanos" nunca vão se relacionar dentro do código. Mas é necessário um nível de abstração muito grande para poder contemplar ambas classes. E, mesmo assim, elas nunca terão uma relação de herança entre elas!

image

Ah, finalizando: não trazemos a classe do Rei Tritão porque, essa relação entre as 7 irmãs e o rei seria uma relação de "associação estrutural de composição", ou seja, caso o Rei Tritão não exista mais, as outras classes "filhas" ainda continuariam existindo!

class ReiTritão {
Ariel ariel }

É isso galera! Espero ter ajudado a esclarecer esse conceito para vocês!

Me digam ai: qual próximo tema eu devo trazer?

Nos vemos por aí 💻

Crédito de imagem: DISNEY
Direitos autorais: © 2023 Disney Enterprises, Inc. All Rights Reserved.
Compartilhe
Comentários (3)

AP

Airton Pelissari - 26/05/2023 11:15

Parabéns Amanda, sensacional!!!

Leonardo Medina
Leonardo Medina - 26/05/2023 09:53

Artigo sensacional, parabéns Amanda!

Jadson Lago
Jadson Lago - 26/05/2023 08:42

Simplesmente fantástico...

Hoje estava estudando associação e este seu artigo consolidou tudo que tinha estudado.

Meus parabéns, pois sua abordagem ao assunto foi perfeita.