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
- Para Substituição de método (então polimorfismo de tempo de execução pode ser conseguida).
- Para reutilização de código.
Termos usados em herança
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
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.
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:
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