Paveldėjimas yra galingiausia objektinio programavimo savybė. Tai leidžia mums paveldėti vienos klasės savybes į kitą klasę. Šiame skyriuje aptarsime paveldėjimo tipai Java nuodugniai su realaus gyvenimo pavyzdžiais. Taip pat sukursime Java programas įvairių paveldėjimo tipų koncepcijai įgyvendinti.
Paveldėjimas
Paveldėjimas yra mechanizmas, perkeliantis naują klasę iš esamos klasės. Esama (senoji) klasė yra žinoma kaip bazinė klasė arba super klasė arba tėvų klasė . Naujoji klasė žinoma kaip a išvestinė klasė arba poklasis arba vaikų klasė . Tai leidžia mums naudoti vienos klasės (tėvų) savybes ir elgesį kitoje klasėje (vaiko).
Klasė, kurios savybės yra paveldimos, vadinama tėvų klasė o klasė, kuri paveldi pirminės klasės savybes, yra žinoma kaip vaikų klasė . Taigi, jis nustato ryšį tarp tėvų ir vaikų klasės, kuris yra žinomas kaip tėvas-vaikas arba Yra santykiai.
np std
Tarkime, yra pavadintos dvi klasės tėvas ir Vaikas ir mes norime paveldėti Tėvo klasės savybes Vaiko klasėje. Tai galime pasiekti naudodami tęsiasi raktažodį.
//inherits the properties of the Father class class Child extends Father { //functionality }
Kada turėtume naudoti paveldėjimą?
Paveldėjimas suteikia pakartotinio naudojimo kodo, ypač kai reikia pakartotinai naudoti didelį kodo mastą. Jis taip pat nustato ryšį tarp skirtingų klasių, žinomų kaip a Yra santykiai. Mes taip pat galime ja pasinaudoti, jei norime pasiekti metodo viršenybė .
Taškai, kuriuos reikia prisiminti
- Konstruktorius negali būti paveldimas Java.
- Privatūs nariai Java nepaveldimi.
- Ciklinis paveldėjimas neleidžiamas Java.
- Priskirkite pirminę nuorodą antriniams objektams.
- Konstruktoriai vykdomi dėl super() esančio konstruktoriuje.
Paveldėjimo rūšys
„Java“ palaiko šiuos keturis paveldėjimo tipus:
- Vienkartinis paveldėjimas
- Daugiapakopis paveldėjimas
- Hierarchinis paveldėjimas
- Hibridinis paveldėjimas
Pastaba: Java nepalaiko kelių paveldėjimo.
Aptarkime kiekvieną su tinkamu pavyzdžiu.
Vienkartinis paveldėjimas
Vieno paveldėjimo atveju poklasis išvedamas tik iš vienos superklasės. Jis paveldi vienos iš tėvų klasės savybes ir elgesį. Kartais jis taip pat žinomas kaip paprastas paveldėjimas .
Aukščiau pateiktame paveikslėlyje darbuotojas yra pagrindinė klasė, o vykdomasis asmuo yra vaikų klasė. Vykdomoji klasė paveldi visas Darbuotojų klasės savybes.
Įdiegkime vienintelį paveldėjimo mechanizmą „Java“ programoje.
Executive.java
class Employee { float salary=34534*12; } public class Executive extends Employee { float bonus=3000*6; public static void main(String args[]) { Executive obj=new Executive(); System.out.println('Total salary credited: '+obj.salary); System.out.println('Bonus of six months: '+obj.bonus); } }
Išvestis:
Total salary credited: 414408.0 Bonus of six months: 18000.0
Daugiapakopis paveldėjimas
Į daugiapakopis paveldėjimas , klasė yra kilusi iš klasės, kuri taip pat yra kilusi iš kitos klasės, vadinama kelių lygių paveldėjimu. Paprastais žodžiais tariant, galime pasakyti, kad klasė, turinti daugiau nei vieną pirminę klasę, vadinama kelių lygių paveldėjimu. Atminkite, kad užsiėmimai turi būti skirtingų lygių. Vadinasi, egzistuoja viena bazinė klasė ir viena išvestinė klasė, bet kelios tarpinės bazinės klasės.
kaip gauti iphone jaustukus android
Aukščiau pateiktame paveikslėlyje klasė Marks paveldi klasės Studentai narius arba metodus. Klasė Sportas paveldi klasės „Ženklai“ narius. Todėl Mokinių klasė yra pagrindinė klasės Marks klasė, o klasė Ženklai yra pagrindinė klasės Sportas. Taigi klasė Sportas netiesiogiai paveldi Mokinio savybes kartu su klasės ženklais.
Įdiegkime daugiapakopį paveldėjimo mechanizmą Java programoje.
Multilevel InheritanceExample.java
//super class class Student { int reg_no; void getNo(int no) { reg_no=no; } void putNo() { System.out.println('registration number= '+reg_no); } } //intermediate sub class class Marks extends Student { float marks; void getMarks(float m) { marks=m; } void putMarks() { System.out.println('marks= '+marks); } } //derived class class Sports extends Marks { float score; void getScore(float scr) { score=scr; } void putScore() { System.out.println('score= '+score); } } public class MultilevelInheritanceExample { public static void main(String args[]) { Sports ob=new Sports(); ob.getNo(0987); ob.putNo(); ob.getMarks(78); ob.putMarks(); ob.getScore(68.7); ob.putScore(); } }
Išvestis:
registration number= 0987 marks= 78.0 score= 68.7
Hierarchinis paveldėjimas
Jei iš vienos bazinės klasės išvesta keletas klasių, ji vadinama hierarchinis paveldėjimas .
Aukščiau pateiktame paveikslėlyje mokslo, komercijos ir menų klasės paveldi vieno iš tėvų klasę, pavadintą Studentas.
Įdiegkime hierarchinį paveldėjimo mechanizmą Java programoje.
Hierarchical HeritanceExample.java
//parent class class Student { public void methodStudent() { System.out.println('The method of the class Student invoked.'); } } class Science extends Student { public void methodScience() { System.out.println('The method of the class Science invoked.'); } } class Commerce extends Student { public void methodCommerce() { System.out.println('The method of the class Commerce invoked.'); } } class Arts extends Student { public void methodArts() { System.out.println('The method of the class Arts invoked.'); } } public class HierarchicalInheritanceExample { public static void main(String args[]) { Science sci = new Science(); Commerce comm = new Commerce(); Arts art = new Arts(); //all the sub classes can access the method of super class sci.methodStudent(); comm.methodStudent(); art.methodStudent(); } }
Išvestis:
The method of the class Student invoked. The method of the class Student invoked. The method of the class Student invoked.
Hibridinis paveldėjimas
Hibridinės priemonės susideda iš daugiau nei vienos. Hibridinis paveldėjimas yra dviejų ar daugiau paveldėjimo tipų derinys.
Aukščiau pateiktame paveikslėlyje senelis yra super klasė. Tėvo klasė paveldi senelio klasės savybes. Kadangi tėvas ir senelis reiškia vienintelį palikimą. Be to, Tėvo klasę paveldi Sūnaus ir dukters klasė. Taigi Tėvas tampa Sūnaus ir dukters tėvų klase. Šios klasės atspindi hierarchinį paveldėjimą. Kartu tai reiškia hibridinį paveldėjimą.
Įdiegkime hibridinį paveldėjimo mechanizmą Java programoje.
konstruktorius java
Dukra.java
//parent class class GrandFather { public void show() { System.out.println('I am grandfather.'); } } //inherits GrandFather properties class Father extends GrandFather { public void show() { System.out.println('I am father.'); } } //inherits Father properties class Son extends Father { public void show() { System.out.println('I am son.'); } } //inherits Father properties public class Daughter extends Father { public void show() { System.out.println('I am a daughter.'); } public static void main(String args[]) { Daughter obj = new Daughter(); obj.show(); } }
Išvestis:
I am daughter.
Daugkartinis paveldėjimas (nepalaikomas)
„Java“ nepalaiko kelių paveldėjimo būdų dėl dviprasmiškumo. Pavyzdžiui, apsvarstykite šią „Java“ programą.
Demo.java
class Wishes { void message() { System.out.println('Best of Luck!!'); } } class Birthday { void message() { System.out.println('Happy Birthday!!'); } } public class Demo extends Wishes, Birthday //considering a scenario { public static void main(String args[]) { Demo obj=new Demo(); //can't decide which classes' message() method will be invoked obj.message(); } }
Aukščiau pateiktas kodas pateikia klaidą, nes kompiliatorius negali nuspręsti, kuris pranešimo () metodas turi būti iškviestas. Dėl šios priežasties „Java“ nepalaiko kelių paveldėjimo būdų klasės lygiu, bet gali būti pasiektas naudojant sąsaja .