Herança em Java OOPs com exemplo

Índice:

Anonim

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 a 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
  • Herança em Java
  • Exemplo de herança Java
  • Super Keyword
  • Aprenda Herança em OOPs com Exemplo

Tipos de herança

Existem vários tipos de herança em Java:

Herança única:

Na Herança Única, uma classe estende outra classe (apenas uma classe).

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:

Na herança múltipla, uma classe que estende mais de uma classe. Java não oferece suporte a herança múltipla.

Herança Múltipla

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

Herança multinível:

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

Herança multinível

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

Herança hierárquica:

Na Herança hierárquica, uma classe é herdada por muitas subclasses.

Herança Hierárquica

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

Herança híbrida:

A herança híbrida é uma combinação de herança única e múltipla.

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 pela Classe B e depois pela Classe C.

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

Herança em Java

HERANÇA DE JAVA é um mecanismo no qual uma classe adquire a propriedade de outra classe. Em Java, quando existe um relacionamento "Is-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, pois leva à capacidade de reutilização do código.

Sintaxe de herança Java:

class subClass extends superClass{//methods and fields}

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();}}

Super Keyword

A palavra-chave super é semelhante a "esta" palavra-chave.

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 nível de variável, método e construtor.

Sintaxe:

super.();

Aprenda Herança em OOPs com Exemplo

Considere o mesmo aplicativo bancário do exemplo anterior.

Devemos abrir dois tipos de contas diferentes, uma para salvar e outra para verificar (também conhecida como atual).

Vamos comparar e estudar como podemos abordar a codificação de uma perspectiva de programação estruturada e orientada a objetos. Abordagem estrutural : Na programação estruturada, vamos criar duas funções -

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

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

Abordagem de OOPs : Ao usar a abordagem de programação de OOPs. Nós criaríamos duas classes.

  • Cada um com a implementação das funções de depósito e retirada.
  • Isso redundará em trabalho extra.

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 a funcionalidade de conta bancária privilegiada com facilidade de cheque especial. Para um plano de fundo, saque a descoberto é uma facilidade onde você pode sacar uma quantia a mais do que o saldo disponível em sua conta.

Abordagem estrutural: usando a abordagem funcional, tenho que modificar minha função de retirada, que já foi testada e baseada na linha de base. E adicionar um método como o abaixo cuidará de novos requisitos.

Abordagem de OOP: usando a abordagem de OOP, você só precisa escrever uma nova classe com implementação exclusiva da função de retirada. Nunca tocamos na parte testada do código.

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 seu próprio requisito exclusivo de depósitos .

Abordagem estrutural: usando a abordagem estrutural, você deve alterar a parte testada do código de depósito novamente.

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 uma abordagem fácil inicialmente, a OOP ganha a longo prazo.

Vantagem de herança em OOPs

Mas pode-se argumentar que, em todas as classes, você tem pedaços 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 fazer com que as classes filhas herdem a classe "conta". Para que tenham acesso às funções de levantamento e depósito na classe conta.

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