logo

סוגי ירושה בג'אווה

יְרוּשָׁה היא התכונה החזקה ביותר של תכנות מונחה עצמים. זה מאפשר לנו לרשת את המאפיינים של מחלקה אחת למחלקה אחרת. בחלק זה, נדון סוגי ירושה בג'אווה מעמיק עם דוגמאות מהחיים האמיתיים. כמו כן, ניצור תוכניות Java כדי ליישם את הרעיון של סוגים שונים של ירושה.

יְרוּשָׁה

יְרוּשָׁה הוא מנגנון של הנעת מחלקה חדשה ממחלקה קיימת. המחלקה הקיימת (הישנה) ידועה בשם מעמד בסיס אוֹ כיתה על אוֹ כיתת הורים . הכיתה החדשה מכונה א כיתה נגזרת אוֹ תת מחלקה אוֹ כיתת ילדים . זה מאפשר לנו להשתמש במאפיינים ובהתנהגות של כיתה אחת (הורה) בכיתה אחרת (ילד).

מחלקה שהמאפיינים שלה עוברים בירושה ידועה בשם כיתת הורים ומחלקה שיורשת את המאפיינים של מחלקת האב ידועה בשם כיתת ילדים . לפיכך, הוא מבסס מערכת יחסים בין כיתה הורה לילד המכונה הורה-ילד או הוא מערכת יחסים.

aws היסט לאדום

נניח, ישנן שתי מחלקות בשם אַבָּא ו יֶלֶד ואנחנו רוצים לרשת את המאפיינים של כיתת האב בכיתה הילד. אנו יכולים להשיג זאת על ידי שימוש ב- משתרע מילת מפתח.

 //inherits the properties of the Father class class Child extends Father { //functionality } 

סוגי ירושה בג'אווה

מתי עלינו להשתמש בירושה?

ירושה מספקת את שימוש חוזר של קוד במיוחד כאשר יש קנה מידה גדול של קוד לשימוש חוזר. זה גם מבסס את הקשר בין מעמדות שונים המכונה א הוא מערכת יחסים. אנחנו יכולים להשתמש בו גם אם אנחנו רוצים להשיג עוקף שיטה .

נקודות לזכור

  • לא ניתן להוריש את Constructor ב-Java.
  • חברים פרטיים לא עוברים בירושה ב-Java.
  • ירושה מחזורית אינה מותרת ב-Java.
  • הקצה התייחסות אב לאובייקטים צאצאים.
  • בנאים מבוצעים בגלל super() שקיים בבנאי.

סוגי ירושה

Java תומכת בארבעת סוגי ההורשה הבאים:

  • ירושה בודדת
  • ירושה רב-שכבתית
  • ירושה היררכית
  • ירושה היברידית
סוגי ירושה בג'אווה

הערה: ירושה מרובה אינה נתמכת ב-Java.

בואו נדון בכל אחד מהם עם דוגמה נכונה.

ירושה בודדת

בירושה בודדת, תת-מחלקה נגזרת ממעמד-על אחד בלבד. הוא יורש את המאפיינים וההתנהגות של מחלקה חד-הורית. לפעמים זה ידוע גם בשם ירושה פשוטה .

סוגי ירושה בג'אווה

באיור לעיל, עובד הוא כיתת הורים ומנהל הוא כיתת ילד. מחלקת המנהלים יורשת את כל המאפיינים של מחלקת העובד.

בואו ליישם את מנגנון ההורשה הבודדת בתוכנית Java.

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); } } 

תְפוּקָה:

 Total salary credited: 414408.0 Bonus of six months: 18000.0 

ירושה רב-שכבתית

ב ירושה רב-שכבתית , מחלקה נגזרת ממחלקה שגם היא נגזרת ממחלקה אחרת נקראת ירושה מרובת רמות. במילים פשוטות, אנו יכולים לומר שמחלקה שיש לה יותר מכיתת אב אחת נקראת ירושה רב-שכבתית. שימו לב שהשיעורים חייבים להיות ברמות שונות. לפיכך, קיימת מחלקת בסיס אחת ומחלקה נגזרת יחידה אך מספר מחלקות בסיס ביניים.

חיפוש בינארי ב-Java
סוגי ירושה בג'אווה

באיור שלמעלה, ציוני הכיתה יורשים את החברים או השיטות של תלמידי הכיתה. הכיתה ספורט יורשת את חברי הכיתה ציונים. לכן, כיתת הסטודנטים היא כיתת ההורים של הכיתה ציונים והכיתה ציונים היא ההורה של כיתת ספורט. לפיכך, הכיתה ספורט יורשת באופן מרומז את המאפיינים של התלמיד יחד עם ציוני הכיתה.

בואו ליישם את מנגנון ההורשה הרב-שכבתי בתוכנית Java.

MultilevelInheritanceExample.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(); } } 

תְפוּקָה:

 registration number= 0987 marks= 78.0 score= 68.7 

ירושה היררכית

אם מספר מחלקות נגזרות ממחלקת בסיס אחת, היא נקראת ירושה היררכית .

סוגי ירושה בג'אווה

באיור שלמעלה, הכיתות מדעים, מסחר ואומנויות יורשות כיתת אב אחת בשם Student.

בואו ליישם את מנגנון ההורשה ההיררכי בתוכנית Java.

HierarchicalInheritanceExample.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(); } } 

תְפוּקָה:

 The method of the class Student invoked. The method of the class Student invoked. The method of the class Student invoked. 

ירושה היברידית

אמצעים היברידיים מורכבים מיותר מאחד. ירושה היברידית היא שילוב של שני סוגי ירושה או יותר.

סוגי ירושה בג'אווה

באיור שלמעלה, סבא הוא מעמד על. מחלקת האב יורשת את המאפיינים של מחלקת הסבא. מאז אבא וסבא מייצגים ירושה יחידה. יתר על כן, כיתת האב עוברת בירושה על ידי כיתת הבן והבת. כך, האב הופך לכיתת ההורים של הבן והבת. מחלקות אלו מייצגות את הירושה ההיררכית. יחד, זה מציין את הירושה ההיברידית.

בואו ליישם את מנגנון ההורשה ההיברידית בתוכנית Java.

שיטות מחרוזות ב-java

Daughter.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 am daughter. 

ירושה מרובה (לא נתמך)

Java אינה תומכת במספר ירושות עקב אי בהירות. לדוגמה, שקול את תוכנית Java הבאה.

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

הקוד לעיל נותן שגיאה מכיוון שהמהדר לא יכול להחליט איזו שיטת message() יש להפעיל. מסיבה זו, Java אינה תומכת במספר ירושות ברמת הכיתה, אך ניתן להשיגה באמצעות מִמְשָׁק .