logo

Nasljeđivanje u Javi

  1. Nasljedstvo
  2. Vrste nasljeđivanja
  3. Zašto višestruko nasljeđivanje nije moguće u Javi u slučaju klase?

Nasljeđivanje u Javi je mehanizam u kojem jedan objekt poprima sva svojstva i ponašanja nadređenog objekta. To je važan dio OOPs (Objektno orijentirani programski sustav).

Ideja iza nasljeđivanja u Javi je da možete stvoriti nove klase koje su izgrađene na postojećim klasama. Kada naslijedite od postojeće klase, možete ponovno koristiti metode i polja nadređene klase. Štoviše, možete dodati nove metode i polja u svoju trenutnu klasu.

Nasljeđe predstavlja IS-A odnos koji je također poznat kao a roditelj-dijete odnos.

Zašto koristiti nasljeđivanje u Javi

Izrazi koji se koriste u Nasljeđivanju

    Klasa:Klasa je grupa objekata koji imaju zajednička svojstva. To je predložak ili nacrt iz kojeg se stvaraju objekti.Podrazred/podređeni razred:Podklasa je klasa koja nasljeđuje drugu klasu. Također se naziva izvedena klasa, proširena klasa ili podređena klasa.Super razred/roditeljski razred:Superklasa je klasa iz koje podklasa nasljeđuje značajke. Također se naziva bazna klasa ili roditeljska klasa.Ponovno korištenje:Kao što naziv navodi, mogućnost ponovne upotrebe je mehanizam koji vam olakšava ponovnu upotrebu polja i metoda postojeće klase kada stvarate novu klasu. Možete koristiti ista polja i metode već definirane u prethodnoj klasi.

Sintaksa Java nasljeđivanja

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

The proširuje ključnu riječ označava da stvarate novu klasu koja proizlazi iz postojeće klase. Značenje 'proširuje' je povećati funkcionalnost.

ovan glumac

U terminologiji Jave, klasa koja je naslijeđena naziva se roditelj ili superklasa, a nova klasa se naziva dijete ili podklasa.


Primjer Java nasljeđivanja

Nasljeđivanje u Javi

Kao što je prikazano na gornjoj slici, Programer je podklasa, a Zaposlenik je nadklasa. Odnos između dviju klasa je Programer JE Zaposlenik . To znači da je programer vrsta zaposlenika.

leksikografski
 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); } } 
Testirajte sada
 Programmer salary is:40000.0 Bonus of programmer is:10000 

U gornjem primjeru, objekt Programer može pristupiti polju vlastite klase kao i klase Zaposlenik, tj. ponovna upotreba koda.


Vrste nasljeđivanja u Javi

Na temelju klase, mogu postojati tri vrste nasljeđivanja u Javi: jednostruko, višerazinsko i hijerarhijsko.

U java programiranju, višestruko i hibridno nasljeđivanje podržano je samo kroz sučelje. Kasnije ćemo naučiti o sučeljima.

Tipovi nasljeđivanja u Javi

Napomena: Višestruko nasljeđivanje nije podržano u Javi kroz klasu.

Kada jedna klasa naslijedi više klasa, to je poznato kao višestruko nasljeđivanje. Na primjer:

Višestruko nasljeđivanje u Javi

Primjer pojedinačnog nasljeđivanja

Kada klasa naslijedi drugu klasu, to je poznato kao a jedno nasljeđe . U donjem primjeru, klasa Pas nasljeđuje klasu Životinja, tako da postoji jedno nasljeđe.

Datoteka: 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(); }} 

Izlaz:

 barking... eating... 

Primjer višerazinskog nasljeđivanja

Kada postoji lanac nasljeđivanja, to je poznato kao višerazinsko nasljeđivanje . Kao što možete vidjeti u donjem primjeru, klasa BabyDog nasljeđuje klasu Pas koja opet nasljeđuje klasu Životinje, tako da postoji višerazinsko nasljeđivanje.

f filmovi

Datoteka: 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(); }} 

Izlaz:

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

Primjer hijerarhijskog nasljeđivanja

Kada dvije ili više klasa naslijede jednu klasu, to je poznato kao hijerarhijsko naslijeđe . U donjem primjeru, klase Pas i Mačka nasljeđuju klasu Životinje, tako da postoji hijerarhijsko nasljeđivanje.

Datoteka: 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 }} 

Izlaz:

 meowing... eating... 

P) Zašto višestruko nasljeđivanje nije podržano u Javi?

Kako bi se smanjila složenost i pojednostavio jezik, višestruko nasljeđivanje nije podržano u Javi.

usporedivi niz

Razmotrimo scenarij u kojem su A, B i C tri klase. C klasa nasljeđuje A i B klasu. Ako A i B klase imaju istu metodu i vi je pozovete iz objekta klase djeteta, bit će dvosmisleno pozvati metodu A ili B klase.

Budući da su pogreške tijekom prevođenja bolje od pogrešaka u vremenu izvođenja, Java prikazuje pogrešku tijekom prevođenja ako naslijedite 2 klase. Dakle, bez obzira imate li istu metodu ili drugu, doći će do pogreške vremena kompajliranja.

 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? } } 
Testirajte sada
 Compile Time Error