logo

Herança em Java

  1. Herança
  2. Tipos de herança
  3. Por que a herança múltipla não é possível em Java no caso de classe?

Herança em Java é um mecanismo no qual um objeto adquire todas as propriedades e comportamentos de um objeto pai. É uma parte importante OOPs (Sistema de programação orientado a objetos).

A ideia por trás da herança em Java é que você pode criar novos Aulas que são construídos sobre classes existentes. Ao herdar de uma classe existente, você pode reutilizar métodos e campos da classe pai. Além disso, você também pode adicionar novos métodos e campos em sua classe atual.

A herança representa Relacionamento É-A que também é conhecido como pai-filho relação.

Por que usar herança em java

Termos usados ​​​​em herança

    Aula:Uma classe é um grupo de objetos que possuem propriedades comuns. É um modelo ou projeto a partir do qual os objetos são criados.Subclasse/classe infantil:Subclasse é uma classe que herda a outra classe. Também é chamada de classe derivada, classe estendida ou classe filha.Superclasse/Classe Pai:Superclasse é a classe de onde uma subclasse herda os recursos. Também é chamada de classe base ou classe pai.Reutilização:Como o nome especifica, a reutilização é um mecanismo que facilita a reutilização dos campos e métodos da classe existente ao criar uma nova classe. Você pode usar os mesmos campos e métodos já definidos na classe anterior.

A sintaxe da herança Java

 class Subclass-name extends Superclass-name { //methods and fields } 

O estende palavra-chave indica que você está criando uma nova classe derivada de uma classe existente. O significado de 'estende' é aumentar a funcionalidade.

sobrecarga de método

Na terminologia Java, uma classe herdada é chamada de pai ou superclasse, e a nova classe é chamada de filho ou subclasse.


Exemplo de herança Java

Herança em Java

Conforme exibido na figura acima, Programador é a subclasse e Funcionário é a superclasse. A relação entre as duas classes é Programador É Funcionário . Isso significa que o Programador é um tipo de Funcionário.

arp um comando
 class Employee{ float salary=40000; } class Programmer extends Employee{ int bonus=10000; public static void main(String args[]){ Programmer p=new Programmer(); System.out.println('Programmer salary is:'+p.salary); System.out.println('Bonus of Programmer is:'+p.bonus); } } 
Teste agora
 Programmer salary is:40000.0 Bonus of programmer is:10000 

No exemplo acima, o objeto Programmer pode acessar o campo da própria classe, bem como da classe Employee, ou seja, capacidade de reutilização do código.


Tipos de herança em java

Com base na classe, pode haver três tipos de herança em java: única, multinível e hierárquica.

Na programação Java, a herança múltipla e híbrida é suportada apenas pela interface. Aprenderemos sobre interfaces mais tarde.

Tipos de herança em Java

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

Quando uma classe herda várias classes, isso é conhecido como herança múltipla. Por exemplo:

Herança múltipla em Java

Exemplo de herança única

Quando uma classe herda outra classe, isso é conhecido como herança única . No exemplo abaixo, a classe Dog herda a classe Animal, portanto existe a herança única.

Arquivo: TestInheritance.java

 class Animal{ void eat(){System.out.println('eating...');} } class Dog extends Animal{ void bark(){System.out.println('barking...');} } class TestInheritance{ public static void main(String args[]){ Dog d=new Dog(); d.bark(); d.eat(); }} 

Saída:

 barking... eating... 

Exemplo de herança multinível

Quando há uma cadeia de herança, ela é conhecida como herança multinível . Como você pode ver no exemplo abaixo, a classe BabyDog herda a classe Dog que novamente herda a classe Animal, portanto há uma herança multinível.

o que é desktop ini

Arquivo: TestInheritance2.java

 class Animal{ void eat(){System.out.println('eating...');} } class Dog extends Animal{ void bark(){System.out.println('barking...');} } class BabyDog extends Dog{ void weep(){System.out.println('weeping...');} } class TestInheritance2{ public static void main(String args[]){ BabyDog d=new BabyDog(); d.weep(); d.bark(); d.eat(); }} 

Saída:

 weeping... barking... eating... 

Exemplo de herança hierárquica

Quando duas ou mais classes herdam uma única classe, isso é conhecido como herança hierárquica . No exemplo abaixo, as classes Dog e Cat herdam a classe Animal, portanto há herança hierárquica.

Arquivo: TestInheritance3.java

 class Animal{ void eat(){System.out.println('eating...');} } class Dog extends Animal{ void bark(){System.out.println('barking...');} } class Cat extends Animal{ void meow(){System.out.println('meowing...');} } class TestInheritance3{ public static void main(String args[]){ Cat c=new Cat(); c.meow(); c.eat(); //c.bark();//C.T.Error }} 

Saída:

 meowing... eating... 

P) Por que herança múltipla não é suportada em java?

Para reduzir a complexidade e simplificar a linguagem, a herança múltipla não é suportada em java.

Número de 1 milhão

Considere um cenário onde A, B e C são três classes. A classe C herda as classes A e B. Se as classes A e B tiverem o mesmo método e você o chamar do objeto da classe filho, haverá ambigüidade para chamar o método da classe A ou B.

Como os erros em tempo de compilação são melhores que os erros em tempo de execução, Java renderiza erros em tempo de compilação se você herdar 2 classes. Portanto, quer você tenha o mesmo método ou um método diferente, haverá um erro no tempo de compilação.

 class A{ void msg(){System.out.println('Hello');} } class B{ void msg(){System.out.println('Welcome');} } class C extends A,B{//suppose if it were public static void main(String args[]){ C obj=new C(); obj.msg();//Now which msg() method would be invoked? } } 
Teste agora
 Compile Time Error