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).
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.
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.
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.
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.
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 -
- Um para retirar
- 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. .