O que é herança, superclasse e subclasse em Java?

click fraud protection

Um conceito importante na programação orientada a objetos é herança. Ele fornece uma maneira de objetos para definir relacionamentos entre si. Como o nome sugere, um objeto é capaz de herdar características de outro objeto.

Em termos mais concretos, um objeto é capaz de transmitir seu estado e comportamento a seus filhos. Para que a herança funcione, os objetos precisam ter características em comum entre si.

Dentro Java, as classes podem ser obtidas de outras classes, que podem ser obtidas de outras pessoas e assim por diante. Isso ocorre porque eles podem herdar recursos da classe acima dela, até a classe Object superior.

Um exemplo de herança Java

Digamos que fazemos uma classe chamada Humana que representa nossas características físicas. É uma classe genérica que pode representar você, eu ou qualquer pessoa no mundo. Seu estado acompanha coisas como o número de pernas, número de braços e tipo sanguíneo. Tem comportamentos como comer, dormir e andar.

Ser humano é bom para ter uma noção geral do que nos torna todos iguais, mas não pode, por exemplo, me falar sobre diferenças de gênero. Para isso, precisaríamos criar dois novos tipos de classe chamados Homem e Mulher. O estado e o comportamento dessas duas classes diferem entre si de várias maneiras, exceto as que eles herdam do ser humano.

instagram viewer

Portanto, a herança nos permite incluir o estado e os comportamentos da classe pai em seu filho. A classe filho pode então estender o estado e os comportamentos para refletir as diferenças que representa. O aspecto mais importante desse conceito a ser lembrado é que a classe filho é uma versão mais especializada do pai.

O que é uma superclasse?

No relacionamento entre dois objetos, uma superclasse é o nome dado à classe que está sendo herdada. Parece uma classe super-duper, mas lembre-se de que é a versão mais genérica. Nomes melhores para usar podem ser a classe base ou simplesmente a classe pai.

Para dar um exemplo mais real, desta vez, poderíamos ter uma superclasse chamada Person. Seu estado contém o nome, endereço, altura e peso da pessoa, e possui comportamentos como ir às compras, arrumar a cama e assistir TV.

Poderíamos fazer duas novas classes herdadas da Pessoa, chamadas Estudante e Trabalhador. São versões mais especializadas porque, embora tenham nomes, endereços, assistam TV e façam compras, também possuem características diferentes umas das outras.

O trabalhador pode ter um estado que detenha um cargo e um local de trabalho, enquanto o Aluno pode conter dados sobre uma área de estudo e uma instituição de ensino.

Exemplo de superclasse:

Imagine que você defina uma classe Person:

classe pública Pessoa. { }

Uma nova classe pode ser criada estendendo esta classe:

public class Employee estende Person. { }

Diz-se que a classe Person é a superclasse da classe Employee.

O que é uma subclasse?

No relacionamento entre dois objetos, uma subclasse é o nome dado à classe que está herdando da superclasse. Embora pareça um pouco monótono, lembre-se de que é uma versão mais especializada da superclasse.

No exemplo anterior, Student e Worker são as subclasses.

As subclasses também podem ser conhecidas como classes derivadas, classes filho ou classes estendidas.

Quantas subclasses posso ter?

Você pode ter quantas subclasses quiser. Não há limitação para quantas subclasses uma superclasse pode ter. Da mesma forma, não há uma limitação no número de níveis de herança. Uma hierarquia de classes pode ser construída sobre uma certa área de comunalidade.

De fato, se você olhar as bibliotecas da API Java, verá muitos exemplos de herança. Toda classe nas APIs é herdada de uma classe chamada java.lang. Objeto. Por exemplo, sempre que você usa um objeto JFrame, está no final de uma longa linha de herança:

 java.lang. Objeto. estendida por java.awt. Componente. estendida por java.awt. Recipiente. estendida por java.awt. Janela. estendida por java.awt. Quadro, Armação. estendida por javax.swing. JFrame. 

Em Java, quando uma subclasse é herdada de uma superclasse, é conhecida como "estendendo" a superclasse.

Minha subclasse pode herdar de muitas superclasses?

Não. Em Java, uma subclasse pode estender apenas uma superclasse.

Por que usar herança?

A herança permite que os programadores reutilizem o código que já escreveram. No exemplo da classe Human, não precisamos criar novos campos na classe Man and Woman para conter o tipo de sangue, porque podemos usar o herdado da classe Human.

Outro benefício do uso da herança é que ela permite tratar uma subclasse como se fosse uma superclasse. Por exemplo, digamos que um programa tenha criado várias instâncias dos objetos Homem e Mulher. O programa pode precisar chamar o comportamento de suspensão para todos esses objetos. Como o comportamento do sono é um comportamento da superclasse humana, podemos agrupar todos os objetos de homem e mulher e tratá-los como se fossem objetos humanos.

instagram story viewer