logo

Tipos de herança em Java

Herança é o recurso mais poderoso da programação orientada a objetos. Isso nos permite herdar as propriedades de uma classe para outra classe. Nesta seção, discutiremos tipos de herança em Java em profundidade com exemplos da vida real. Além disso, criaremos programas Java para implementar o conceito de diferentes tipos de herança.

algoritmos de classificação de inserção

Herança

Herança é um mecanismo de condução de uma nova classe a partir de uma classe existente. A classe existente (antiga) é conhecida como classe base ou super aula ou classe pai . A nova classe é conhecida como classe derivada ou subclasse ou classe infantil . Permite-nos usar as propriedades e o comportamento de uma classe (pai) em outra classe (filho).

Uma classe cujas propriedades são herdadas é conhecida como classe pai e uma classe que herda as propriedades da classe pai é conhecida como classe infantil . Assim, estabelece-se uma relação entre classe pai e filho que é conhecida como pai-filho ou É um relação.

Suponha que existam duas classes chamadas Pai e Criança e queremos herdar as propriedades da classe Pai na classe Filho. Podemos conseguir isso usando o estende palavra-chave.

 //inherits the properties of the Father class class Child extends Father { //functionality } 

Tipos de herança em Java

Quando devemos usar herança?

A herança fornece reutilização de código, especialmente quando há uma grande escala de código para reutilizar. Também estabelece a relação entre diferentes classes que é conhecida como É um relação. Também podemos usá-lo se quisermos alcançar substituição de método .

Pontos para lembrar

  • O construtor não pode ser herdado em Java.
  • Membros privados não são herdados em Java.
  • A herança cíclica não é permitida em Java.
  • Atribuir referência pai a objetos filhos.
  • Os construtores são executados por causa de super() presente no construtor.

Tipos de herança

Java oferece suporte aos quatro tipos de herança a seguir:

  • Herança única
  • Herança multinível
  • Herança Hierárquica
  • Herança Híbrida
Tipos de herança em Java

Nota: Herança múltipla não é suportada em Java.

Vamos discutir cada um com o exemplo adequado.

Herança única

Na herança única, uma subclasse é derivada de apenas uma superclasse. Ele herda as propriedades e o comportamento de uma classe monoparental. Às vezes também é conhecido como herança simples .

Tipos de herança em Java

Na figura acima, Employee é uma classe pai e Executive é uma classe filha. A classe Executive herda todas as propriedades da classe Employee.

Vamos implementar o mecanismo de herança única em um programa Java.

Executivo.java

número aleatório java
 class Employee { float salary=34534*12; } public class Executive extends Employee { float bonus=3000*6; public static void main(String args[]) { Executive obj=new Executive(); System.out.println('Total salary credited: '+obj.salary); System.out.println('Bonus of six months: '+obj.bonus); } } 

Saída:

 Total salary credited: 414408.0 Bonus of six months: 18000.0 

Herança multinível

Em herança multinível , uma classe é derivada de uma classe que também é derivada de outra classe é chamada de herança multinível. Em palavras simples, podemos dizer que uma classe que possui mais de uma classe pai é chamada de herança multinível. Observe que as aulas devem estar em níveis diferentes. Conseqüentemente, existe uma única classe base e uma única classe derivada, mas várias classes base intermediárias.

Tipos de herança em Java

Na figura acima, a classe Marks herda os membros ou métodos da classe Students. A classe Esportes herda os membros da classe Marcas. Portanto, a classe Aluno é a classe pai da classe Marcas e a classe Marcas é a pai da classe Esportes. Conseqüentemente, a classe Esportes herda implicitamente as propriedades do Aluno junto com a classe Marcas.

Vamos implementar o mecanismo de herança multinível em um programa Java.

MultilevelInheritanceExample.java

festa de divisão de string
 //super class class Student { int reg_no; void getNo(int no) { reg_no=no; } void putNo() { System.out.println('registration number= '+reg_no); } } //intermediate sub class class Marks extends Student { float marks; void getMarks(float m) { marks=m; } void putMarks() { System.out.println('marks= '+marks); } } //derived class class Sports extends Marks { float score; void getScore(float scr) { score=scr; } void putScore() { System.out.println('score= '+score); } } public class MultilevelInheritanceExample { public static void main(String args[]) { Sports ob=new Sports(); ob.getNo(0987); ob.putNo(); ob.getMarks(78); ob.putMarks(); ob.getScore(68.7); ob.putScore(); } } 

Saída:

 registration number= 0987 marks= 78.0 score= 68.7 

Herança Hierárquica

Se várias classes são derivadas de uma única classe base, ela é chamada herança hierárquica .

Tipos de herança em Java

Na figura acima, as classes Ciência, Comércio e Artes herdam uma classe pai única chamada Aluno.

Vamos implementar o mecanismo de herança hierárquica em um programa Java.

HierarchicalInheritanceExample.java

 //parent class class Student { public void methodStudent() { System.out.println('The method of the class Student invoked.'); } } class Science extends Student { public void methodScience() { System.out.println('The method of the class Science invoked.'); } } class Commerce extends Student { public void methodCommerce() { System.out.println('The method of the class Commerce invoked.'); } } class Arts extends Student { public void methodArts() { System.out.println('The method of the class Arts invoked.'); } } public class HierarchicalInheritanceExample { public static void main(String args[]) { Science sci = new Science(); Commerce comm = new Commerce(); Arts art = new Arts(); //all the sub classes can access the method of super class sci.methodStudent(); comm.methodStudent(); art.methodStudent(); } } 

Saída:

 The method of the class Student invoked. The method of the class Student invoked. The method of the class Student invoked. 

Herança Híbrida

Os meios híbridos consistem em mais de um. Herança híbrida é a combinação de dois ou mais tipos de herança.

Tipos de herança em Java

Na figura acima, GrandFather é uma superclasse. A classe Father herda as propriedades da classe GrandFather. Já que Pai e Avô representam herança única. Além disso, a classe Pai é herdada pela classe Filho e Filha. Assim, o Pai se torna a classe pai do Filho e da Filha. Essas classes representam a herança hierárquica. Combinadamente, denota a herança híbrida.

Vamos implementar o mecanismo de herança híbrida em um programa Java.

Filha.java

java enquanto condição
 //parent class class GrandFather { public void show() { System.out.println('I am grandfather.'); } } //inherits GrandFather properties class Father extends GrandFather { public void show() { System.out.println('I am father.'); } } //inherits Father properties class Son extends Father { public void show() { System.out.println('I am son.'); } } //inherits Father properties public class Daughter extends Father { public void show() { System.out.println('I am a daughter.'); } public static void main(String args[]) { Daughter obj = new Daughter(); obj.show(); } } 

Saída:

 I am daughter. 

Herança múltipla (não suportada)

Java não oferece suporte a heranças múltiplas devido à ambigüidade. Por exemplo, considere o seguinte programa Java.

Demo.java

 class Wishes { void message() { System.out.println('Best of Luck!!'); } } class Birthday { void message() { System.out.println('Happy Birthday!!'); } } public class Demo extends Wishes, Birthday //considering a scenario { public static void main(String args[]) { Demo obj=new Demo(); //can't decide which classes' message() method will be invoked obj.message(); } } 

O código acima apresenta erro porque o compilador não consegue decidir qual método message() deve ser invocado. Devido a esta razão, Java não suporta múltiplas heranças no nível de classe, mas pode ser alcançado através de um interface .