Herança em Java OOPs: aprenda diferentes tipos com exemplo

O que é herança?

Herança é um mecanismo no qual uma classe adquire a propriedade de outra classe. Por exemplo, uma criança herda as características de seus pais. Com herança, podemos reutilizar os campos e métodos da classe existente. Conseqüentemente, a herança facilita a reutilização e é um conceito importante de OOPs.

Neste tutorial, você aprenderá

Tipos de herança

Aqui estão os diferentes tipos de herança em Java:

Herança única:

Na herança única, uma classe estende outra classe (apenas uma classe).

Herança única em Java
Herança Única

No diagrama acima, a Classe B estende apenas a Classe A. A Classe A é uma superclasse e a Classe B é uma Subclasse.

Herança múltipla:

Herança múltipla é uma das heranças em tipos Java em que uma classe estende mais de uma classe. Java não suporta herança múltipla.

Herança múltipla em Java
Herança Múltipla Java

Conforme o diagrama acima, a Classe C estende a Classe A e a Classe B.

Herança multinível:

Na herança multinível, uma classe pode herdar de uma classe derivada. Conseqüentemente, a classe derivada se torna a classe base para a nova classe.

Herança multinível em Java
Herança multinível

Conforme mostrado no diagrama, a Classe C é uma subclasse de B e B é uma da subclasse Classe A.

aquiarchiherança cal:

Em aquiarchical Herança, uma classe é herdada por muitas subclasses.


aquiarchiherança cal em Java
aquiarchiherança cal

Conforme o exemplo acima, as classes B, C e D herdam a mesma classe A.

Herança Híbrida:

Herança híbrida é um dos tipos de herança em Java, que é uma combinação de herança única e múltipla.


Herança Híbrida
Herança Híbrida

Conforme o exemplo acima, todos os membros públicos e protegidos da Classe A são herdados na Classe D, primeiro através da Classe B e, em segundo lugar, através da Classe C.

Nota: Java não suporta herança híbrida/múltipla

Herança em Java

Herança Java é um mecanismo no qual uma classe adquire a propriedade de outra classe. Em Java, quando existe um relacionamento “É-A” entre duas classes, usamos Herança. A classe pai é chamada de superclasse e a classe herdada é chamada de subclasse. A palavra-chave extends é usado pela subclasse para herdar os recursos da superclasse.

A herança é importante porque leva à reutilização do código.

Sintaxe de herança Java:

class subClass extends superClass  
{  
   //methods and fields  
}  

Exemplo de herança Java

Aqui está um exemplo de herança em Java:


Exemplo de herança Java
Exemplo de herança Java

class Doctor {
 void Doctor_Details() {
  System.out.println("Doctor Details...");
 }
}

class Surgeon extends Doctor {
 void Surgeon_Details() {
  System.out.println("Surgen Detail...");
 }
}

public class Hospital {
 public static void main(String args[]) {
  Surgeon s = new Surgeon();
  s.Doctor_Details();
  s.Surgeon_Details();
 }
}

Superpalavra-chave

A super palavra-chave é semelhante à palavra-chave “esta”.

A palavra-chave super pode ser usada para acessar qualquer membro de dados ou métodos da classe pai.

Super palavra-chave pode ser usada em variável, método e nível de construtor.

Sintaxe:

super.<method-name>();

Verifique também: - esta palavra-chave em Java: o que é e como usar com exemplo

Aprenda herança em POO com exemplo

Considere o mesmo aplicativo bancário do exemplo anterior.

Devemos abrir dois tipos de contas diferentes, uma para poupança e outra para corrente (também conhecida como corrente).

Herança em OOP

Vamos comparar e estudar como podemos abordar a codificação a partir de um perspectiva de programação estruturada e orientada a objetos.

abordagem estrutural: Na programação estruturada, criaremos duas funções –

  1. Um para retirar
  2. E o outro para ação de depósito.

Uma vez que o funcionamento dessas funções permanece o mesmo em todas as contas.

Herança em OOPs

Abordagem OOP: Ao usar o OOPs abordagem de programação. Criaríamos duas classes.

  • Cada um tendo implementação das funções de depósito e retirada.
  • Isso será um trabalho extra redundante.

Herança em OOPs

Solicitação de mudança no software

Agora há uma mudança na especificação de requisitos para algo que é tão comum na indústria de software. Você deve adicionar funcionalidade de conta bancária privilegiada com recurso de cheque especial. Como pano de fundo, o cheque especial é uma facilidade onde você pode sacar um valor superior ao saldo disponível em sua conta.

Solicitação de mudança no software

Abordagem estrutural: Usando uma abordagem funcional, tenho que modificar minha função de retirada, que já foi testada e definida como linha de base. E adicionar um método como o abaixo atenderá aos novos requisitos.

Solicitação de mudança no software

Abordagem OOP: Usando a abordagem OOP, você só precisa escrever uma nova classe com implementação exclusiva da função de retirada. Nunca tocamos no trecho de código testado.

Solicitação de mudança no software

Outra solicitação de mudança

E se o requisito mudar ainda mais? Gostaria de adicionar uma conta de cartão de crédito com sua própria exigência exclusiva de depósitos.

Solicitação de múltiplas alterações no requisito de software

Abordagem estrutural: Usando a abordagem estrutural, você deve alterar novamente o trecho testado do código de depósito.

Abordagem estrutural para múltiplas solicitações de mudança em software

Abordagem OOP: Mas usando a abordagem orientada a objetos, você apenas criará uma nova classe com sua implementação exclusiva do método de depósito (destacado em vermelho na imagem abaixo).

Portanto, embora a programação estrutural pareça inicialmente uma abordagem fácil, a OOP ganha no longo prazo.

Abordagem OOP para Solicitações de Mudança Múltipla

Vantagens da herança em OOPs

Mas pode-se argumentar que em todas as classes, você tem trechos de código repetidos.

Para superar isso, você cria uma classe pai, diz “conta” e implementa a mesma função de depósito e retirada. E faça com que as classes filhas herdem a classe “conta”. Para que tenham acesso às funções de saque e depósito na classe de conta.

As funções não precisam ser implementadas individualmente. Isso é Herança em java. .

Vantagens da herança em OOPs

Vantagens da herança em OOPs

Verifique também: - Tutorial Java para iniciantes: Aprenda a programação Java básica