logo

Moștenirea în Java

  1. Moştenire
  2. Tipuri de moștenire
  3. De ce moștenirea multiplă nu este posibilă în Java în cazul clasei?

Moștenirea în Java este un mecanism prin care un obiect dobândește toate proprietățile și comportamentele unui obiect părinte. Este o parte importantă a OOPs (Sistem de programare orientat pe obiecte).

Ideea din spatele moștenirii în Java este că puteți crea noi clase care sunt construite pe clasele existente. Când moșteniți dintr-o clasă existentă, puteți reutiliza metode și câmpuri ale clasei părinte. Mai mult, puteți adăuga noi metode și câmpuri și în clasa dvs. curentă.

Moștenirea reprezintă E-O relație care mai este cunoscută și ca a părinte-copil relaţie.

De ce să folosiți moștenirea în java

Termeni folosiți în Moștenire

    Clasă:O clasă este un grup de obiecte care au proprietăți comune. Este un șablon sau un plan din care sunt create obiectele.Subclasa/Clasa pentru copii:Subclasa este o clasă care moștenește cealaltă clasă. Se mai numește și clasă derivată, clasă extinsă sau clasă copil.Super clasă/clasa pentru părinți:Superclasa este clasa de unde o subclasă moștenește caracteristicile. Se mai numește și clasă de bază sau clasă părinte.Reutilizabilitate:După cum specifică și numele, reutilizarea este un mecanism care vă facilitează reutilizarea câmpurilor și metodelor clasei existente atunci când creați o nouă clasă. Puteți utiliza aceleași câmpuri și metode deja definite în clasa anterioară.

Sintaxa moștenirii Java

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

The extinde cuvântul cheie indică faptul că creați o nouă clasă care derivă dintr-o clasă existentă. Sensul cuvântului „se extinde” este de a crește funcționalitatea.

redenumiți în directorul linux

În terminologia Java, o clasă care este moștenită se numește părinte sau superclasă, iar noua clasă se numește copil sau subclasă.


Exemplu de moștenire Java

Moștenirea în Java

După cum este afișat în figura de mai sus, Programer este subclasa și Employee este superclasa. Relația dintre cele două clase este Programator IS-A Angajat . Înseamnă că Programatorul este un tip de Angajat.

arp o comandă
 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); } } 
Testează-l acum
 Programmer salary is:40000.0 Bonus of programmer is:10000 

În exemplul de mai sus, obiectul Programator poate accesa câmpul clasei proprii, precum și al clasei Employee, adică reutilizarea codului.


Tipuri de moștenire în java

Pe baza clasei, pot exista trei tipuri de moștenire în java: unic, multinivel și ierarhic.

În programarea java, moștenirea multiplă și hibridă este acceptată numai prin interfață. Despre interfețe vom afla mai târziu.

Tipuri de moștenire în Java

Notă: Moștenirea multiplă nu este acceptată în Java prin clasă.

Când o clasă moștenește mai multe clase, este cunoscută ca moștenire multiplă. De exemplu:

Moștenire multiplă în Java

Exemplu de moștenire unică

Când o clasă moștenește o altă clasă, este cunoscută ca a moștenire unică . În exemplul de mai jos, clasa Dog moștenește clasa Animal, deci există moștenirea unică.

Fișier: TestInheritance.java

manipularea șirurilor de caractere în c++
 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(); }} 

Ieșire:

 barking... eating... 

Exemplu de moștenire pe mai multe niveluri

Când există un lanț de moștenire, acesta este cunoscut ca moștenire pe mai multe niveluri . După cum puteți vedea în exemplul de mai jos, clasa BabyDog moștenește clasa Dog care moștenește din nou clasa Animal, deci există o moștenire pe mai multe niveluri.

Fișier: 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(); }} 

Ieșire:

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

Exemplu de moștenire ierarhică

Când două sau mai multe clase moștenesc o singură clasă, aceasta este cunoscută ca moștenire ierarhică . În exemplul de mai jos, clasele Dog și Cat moștenesc clasa Animal, deci există o moștenire ierarhică.

jframe

Fișier: 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 }} 

Ieșire:

 meowing... eating... 

Î) De ce moștenirea multiplă nu este acceptată în java?

Pentru a reduce complexitatea și a simplifica limbajul, moștenirea multiplă nu este acceptată în java.

Luați în considerare un scenariu în care A, B și C sunt trei clase. Clasa C moștenește clasele A și B. Dacă clasele A și B au aceeași metodă și o numiți din obiectul clasei copil, va exista ambiguitate în a apela metoda clasei A sau B.

Deoarece erorile de timp de compilare sunt mai bune decât erorile de rulare, Java redă eroarea de compilare dacă moșteniți 2 clase. Deci, indiferent dacă aveți aceeași metodă sau diferită, va exista o eroare de timp de compilare.

 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? } } 
Testează-l acum
 Compile Time Error