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ą
- Dėl Metodo nepaisymas (taip vykdymo laiko polimorfizmas galima pasiekti).
- Dėl kodo pakartotinio naudojimo.
Paveldėjimo terminai
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
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.
Pastaba: „Java“ nepalaiko kelių paveldėjimo per klasę.
Kai viena klasė paveldi kelias klases, tai vadinama daugybiniu paveldėjimu. Pavyzdžiui:
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