שפת Java – הפעם נלמד inheritance.
הגדרה של מחלקה בשם Mainclass שממנה תהיה ירושה
class Mainclass { int x; Mainclass (int x) { this.x= x; } public void getX() { System.out.println("X in super class: " +this.x); } }
הסבר:
במחלקה Mainclass הגרנו פרמטר X מסוג Integer
וגם בנאי אשר מקבל פרמטר ומאתחל X בערך מסוג Integer
class Mainclass { int x; Mainclass (int x) { this.x= x; } }
כזכור בעזרת this אנחנו מפנים אל פרמטר X אשר הוגדר במחלקה
ומבדילים מפרמטר X שאותו מקבלים בבנאי!
בסוף יש מטודה בשם getX, אשר מדפיסה את הערך X
public void getX() { System.out.println("X in super class: " +this.x); }
דוגמה:
קריאה למטודה ממחלקה ראשית שממנה יש ירושה
public class SubMainclass extends Mainclass { SubMainclass(int x) { super(x);//17 public static void main(String args[]) { SubMainclass obj = new SubMainclass(17);//X in super class: 17 obj.getX(); } }
הסבר:
מחלקה בשם SubMainclass מקבלת יורשה ממחלקה Mainclass
public class SubMainclass extends Mainclass { SubMainclass(int x) { super(x);//17 } }
מה זה יורשה?
יורשה זה קבלת כל פרמטרים ומטודות שהוגדרו ממחלקה שממנה יורשים.
* אנחנו עוד נלמד איך אפשר להסתיר פרמטרים ומטודות שלא יהיו נגישים למחלקות יורשות.
** תמיד מחלקה יורשת חייבת להכיל בנאי של המחלקה ראשית!
לכן במחלקה SubMainclass יש כל פרמטרים ומטודות של המחלקה ראשית Mainclass
כזכור לכל מחלקה חייב להיות בנאי ואם זה מדובר במחלקה יורשת אז בנאי חייב להחיל את הבנאי ממחלקה ראשית.
במקרה שלנו למחלקה ראשית Mainclass יש בנאי
Mainclass (int x) { this.x= x; }
לכן במחלקה יורשת SubMainclass יהיה בנאי:
* בעזרת super (מילה שמורה) אנחנו מאתחלים את הבנאי ממחלקה ראשית Mainclass
super(x)
לסיכום זה הבנאי במחלקה היורשת SubMainclass
SubMainclass(int x) { super(x);//17 }
עכשיו בו נתמקד במשהו שכתוב בכחול
public class SubMainclass extends Mainclass {
SubMainclass(int x) {
super(x);//17
public static void main(String args[]) {
SubMainclass obj = new SubMainclass(17);//X in super class: 17
obj.getX();
}
}
כאן יש הגדרה של הקוד להרצת תוכנה ב-Java,
public static void main(String args[]) { SubMainclass obj = new SubMainclass(17);//X in super class: 17 obj.getX(); }
אשר מכיל הגדרה של אובייקט ממחלקה ראשית
SubMainclass obj = new SubMainclass(17);//X in super class: 17
ובעזרה מטודה getX מדפיסים את הביטוי
public void getX() { System.out.println("X in super class: " +this.x); }
שזה:
"X in super class: 17