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
- Pentru Anularea metodei (asa de polimorfismul de rulare poate fi realizat).
- Pentru reutilizarea codului.
Termeni folosiți în Moștenire
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
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.
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:
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