logo

Paveldėjimas Java

  1. Paveldėjimas
  2. Paveldėjimo rūšys
  3. Kodėl „Java“ negalimas daugybinis paveldėjimas klasės atveju?

Paveldėjimas Java yra mechanizmas, kai vienas objektas įgyja visas pirminio objekto savybes ir elgesį. Tai svarbi dalis OOP (Objektinė programavimo sistema).

„Java“ paveldėjimo idėja yra ta, kad galite sukurti naujų klases kurios yra sukurtos remiantis esamomis klasėmis. Kai paveldėsite iš esamos klasės, galite pakartotinai naudoti pagrindinės klasės metodus ir laukus. Be to, dabartinėje klasėje galite pridėti naujų metodų ir laukų.

Paveldėjimas reiškia IS-Santykiai kuris taip pat žinomas kaip a tėvas-vaikas santykiai.

Kodėl java naudoti paveldėjimą

Paveldėjimo terminai

    Klasė:Klasė yra objektų, turinčių bendrų savybių, grupė. Tai šablonas arba projektas, iš kurio kuriami objektai.Poklasė/vaikų klasė:Poklasis yra klasė, kuri paveldi kitą klasę. Ji taip pat vadinama išvestine klase, išplėstine klase arba vaikų klase.Super klasė / tėvų klasė:Superklasė yra klasė, iš kurios poklasis paveldi savybes. Ji taip pat vadinama bazine klase arba pagrindine klase.Pakartotinis naudojimas:Kaip nurodo pavadinimas, pakartotinis naudojimas yra mechanizmas, kuris padeda pakartotinai naudoti esamos klasės laukus ir metodus, kai kuriate naują klasę. Galite naudoti tuos pačius laukus ir metodus, kurie jau buvo apibrėžti ankstesnėje klasėje.

Java paveldėjimo sintaksė

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

The pratęsia raktinį žodį rodo, kad kuriate naują klasę, kuri kilusi iš esamos klasės. „Išplečia“ reiškia padidinti funkcionalumą.

Java pavadinimų konvencija

„Java“ terminologijoje paveldima klasė vadinama pirmine arba superklase, o nauja klasė – antrine arba poklase.


Java paveldėjimo pavyzdys

Paveldėjimas Java

Kaip parodyta aukščiau esančiame paveikslėlyje, programuotojas yra poklasis, o darbuotojas yra viršklasis. Santykis tarp dviejų klasių yra Programuotojas IS-A darbuotojas . Tai reiškia, kad programuotojas yra darbuotojo tipas.

dvigubai java
 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); } } 
Išbandykite dabar
 Programmer salary is:40000.0 Bonus of programmer is:10000 

Aukščiau pateiktame pavyzdyje Programuotojo objektas gali pasiekti savo klasės lauką, taip pat darbuotojų klasės lauką, ty kodo pakartotinio naudojimo.


Paveldėjimo tipai Java

Remiantis klase, java gali būti trijų tipų paveldėjimas: vienas, daugiapakopis ir hierarchinis.

Java programavimo metu daugialypis ir hibridinis paveldėjimas palaikomas tik per sąsają. Apie sąsajas sužinosime vėliau.

Paveldėjimo tipai Java

Pastaba: „Java“ nepalaiko kelių paveldėjimo per klasę.

Kai viena klasė paveldi kelias klases, tai vadinama daugybiniu paveldėjimu. Pavyzdžiui:

Daugkartinis paveldėjimas Java

Vieno paveldėjimo pavyzdys

Kai klasė paveldi kitą klasę, ji vadinama a vienkartinis paveldėjimas . Toliau pateiktame pavyzdyje šunų klasė paveldi gyvūnų klasę, taigi yra vienintelis paveldėjimas.

užblokuoti kontaktai

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

Išvestis:

 barking... eating... 

Daugiapakopis paveldėjimo pavyzdys

Kai yra paveldėjimo grandinė, ji vadinama daugiapakopis paveldėjimas . Kaip matote toliau pateiktame pavyzdyje, BabyDog klasė paveldi šunų klasę, kuri vėl paveldi klasę Animal, taigi yra kelių lygių paveldėjimas.

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

Išvestis:

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

Hierarchinio paveldėjimo pavyzdys

Kai dvi ar daugiau klasių paveldi vieną klasę, ji vadinama hierarchinis paveldėjimas . Toliau pateiktame pavyzdyje šunų ir kačių klasės paveldi gyvūnų klasę, taigi yra hierarchinis paveldėjimas.

Failas: TestInheritance3.java

a-b genėjimas
 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 }} 

Išvestis:

 meowing... eating... 

Kl.) Kodėl java nepalaikomas daugialypis paveldėjimas?

Siekiant sumažinti sudėtingumą ir supaprastinti kalbą, java nepalaikomas daugialypis paveldėjimas.

Apsvarstykite scenarijų, kai A, B ir C yra trys klasės. C klasė paveldi A ir B klases. Jei A ir B klasėse yra tas pats metodas ir jūs jį iškviečiate iš antrinės klasės objekto, bus neaišku, kaip iškviesti A arba B klasės metodą.

Kadangi kompiliavimo laiko klaidos yra geresnės nei vykdymo klaidos, „Java“ pateikia kompiliavimo laiko klaidą, jei paveldėsite 2 klases. Taigi, nesvarbu, ar naudojate tą patį metodą, ar kitą, bus kompiliavimo laiko klaida.

 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? } } 
Išbandykite dabar
 Compile Time Error