SlideShare une entreprise Scribd logo
1  sur  7
Télécharger pour lire hors ligne
‫מתודות‬ ‫דריסת‬–Method Overriding
‫כאשר‬ ‫מתודות‬ ‫דריסת‬ ‫של‬ ‫יישומים‬ ‫ראינו‬ .‫הזדמנויות‬ '‫במס‬ ‫מתודות‬ ‫דריסת‬ ‫נושא‬ ‫את‬ ‫אחרת‬ ‫או‬ ‫זו‬ ‫בצורה‬ ‫הזכרנו‬ ,‫כה‬ ‫עד‬
‫המתודות‬ ‫את‬ ‫הזכרנו‬finalize()‫ו‬-equals()‫של‬ ‫ההגדרה‬ ‫בטווח‬ ‫כשדרסנו‬ ‫אנונימיות‬ ‫פנימיות‬ ‫מחלקות‬ ‫בנושא‬ ‫בפרק‬ ,‫כן‬ ‫וכמו‬
‫בדוגמה‬ :‫(תזכורת‬ ‫ייחודי‬ ‫אובייקט‬ ‫קבלת‬ ‫לשם‬ ‫הרחבנו‬ ‫אותה‬ ‫המחלקה‬ ‫של‬ ‫המתודות‬ ‫אחת‬ ‫את‬ ‫האנונימית‬ ‫הפנימית‬ ‫המחלקה‬
‫המתודה‬ ‫את‬ ‫דרסנו‬ ‫שראינו‬cout().)
‫במ‬ ‫חדשה‬ ‫מתודה‬ ‫להגדיר‬ ‫עלינו‬ ,‫קיימת‬ ‫מתודה‬ ‫לדרוס‬ ‫מנת‬ ‫על‬‫בעלת‬ ‫שתהה‬ ,‫ממשק‬ ‫מממשת‬ ‫או‬ ‫ממחלקה‬ ‫שיורשת‬ ‫חלקה‬
‫אינה‬ ‫לדרוס‬ ‫מעוניינים‬ ‫אותה‬ ‫שהמתודה‬ ‫ובלבד‬ ‫הגדרתה‬ ‫את‬ ‫להחליף‬ ‫מעוניינים‬ ‫שאנו‬ ‫המתודה‬ ‫כמו‬ ‫בדיוק‬ ‫החתימה‬ ‫אותה‬
.)‫בהמשך‬ ‫(יוסבר‬ ‫סופית‬ ‫מתודה‬
:‫דוגמה‬ ‫נראה‬
public class BaseClass {
protected int getID(int number) {
return number*number+3;
}
}
public class DerivedClass extends BaseClass {
protected int getID(int number) {
return number+3;
}
}
‫הוגדרה‬ ‫שבו‬ ‫באופן‬getID‫הלוגיקה‬ ‫ורק‬ )‫הכרחי‬ ‫תנאי‬ ,‫(כאמור‬ ‫לחלוטין‬ ‫זהה‬ ‫המתודה‬ ‫של‬ ‫והחתימה‬ ‫היות‬ ,‫היורשת‬ ‫במחלקה‬
‫היא‬ ‫כאשר‬ ,‫שונה‬ ‫הפנימית‬‫מחדש‬ ‫שהוגדרה‬ ‫המתודה‬ ,‫היורשת‬ ‫מהמחלקה‬ ‫אובייקט‬ ‫על‬ ‫תופעל‬-‫ולא‬ ‫שתופעל‬ ‫זו‬ ‫היא‬ ‫נדרסה‬
‫את‬ ‫מחדש‬ ‫מגדירים‬ ‫ולא‬ ,‫דריסה‬ ‫מבצעים‬ ‫היינו‬ ‫לא‬ ‫שאם‬ ‫כמובן‬ .‫המקורית‬ ‫המתודה‬getID,‫בה‬ ‫להשתמש‬ ‫יכולים‬ ‫היינו‬ ‫עדיין‬
.‫הבסיס‬ ‫ממחלקת‬ ‫שהגיעה‬ ‫זו‬ ‫הייתה‬ ‫שלה‬ ‫שההגדרה‬ ‫רק‬
super
‫השמורה‬ ‫המילה‬ ‫את‬ ‫להזכיר‬ ‫נכון‬ ,‫זו‬ ‫בנקודה‬super.‫מתודות‬ ‫דריסת‬ ‫של‬ ‫בהקשר‬ ‫בה‬ ‫השימוש‬ ‫לגבי‬ ‫ולהסביר‬
‫השמורה‬ ‫המילה‬ ‫בפנינו‬ ‫נגישה‬ ‫הופכת‬ ,‫יורשת‬ ‫מחלקה‬ ‫של‬ ‫הגדרתה‬ ‫בתחום‬ ‫נמצאים‬ ‫אנו‬ ‫כאשר‬super‫בצירוף‬ ,‫בה‬ ‫שימוש‬ .
.‫מרחיבה‬ ‫שלנו‬ ‫המחלקה‬ ‫אותה‬ ‫הבסיס‬ ‫מחלקת‬ ‫ומתודות‬ ‫משתני‬ ‫את‬ ‫בפנינו‬ ‫יחשוף‬ ‫אחריה‬ ‫מפרידה‬ ‫נקודה‬
‫מגדירים‬ ‫שאנו‬ ‫המחלקה‬ ‫אם‬ ‫שהרי‬ ,‫מיותר‬ ‫הוא‬ ‫זו‬ ‫שמורה‬ ‫במילה‬ ‫ששימוש‬ ‫לחשוב‬ ‫כמובן‬ ‫נוכל‬ ,‫לעומק‬ ‫כך‬ ‫על‬ ‫נחשוב‬ ‫לא‬ ‫אם‬
‫לג‬ ‫יכולים‬ ‫שאנו‬ ‫ידוע‬ ,‫הבסיס‬ ‫מחלקת‬ ‫את‬ ‫מרחיבה‬ ‫כרגע‬‫המילה‬ ‫בלי‬ ‫גם‬ ‫שלה‬ ‫ומתודות‬ ‫למשתנים‬ ‫שת‬super‫יהיה‬ ‫אכן‬ ‫והדבר‬ ,
.‫חדשה‬ ‫מתודה‬ ‫ע"י‬ ‫דרסנו‬ ‫הגדרתה‬ ‫שאת‬ ‫במתודה‬ ‫מדובר‬ ‫כאשר‬ :‫אחד‬ ‫במקרה‬ ‫מלבד‬ ‫המקרים‬ ‫בכל‬ ‫נכון‬
,‫בירושה‬ ‫שהגיעה‬ ‫המתודה‬ ‫לחתימת‬ ‫לחלוטין‬ ‫זהה‬ ‫המתודה‬ ‫וחתימת‬ ‫היות‬ ,‫יורשת‬ ‫במחלקה‬ ‫מתודה‬ ‫דריסת‬ ‫שביצענו‬ ‫מרגע‬
‫במח‬ ‫למתודה‬ ‫הגישה‬.‫הדורסת‬ ‫המתודה‬ ‫ע"י‬ ‫מוסתרת‬ ‫להיות‬ ‫הופכת‬ ‫הבסיס‬ ‫לקת‬
‫השמורה‬ ‫המילה‬ ‫את‬ ‫לשלוף‬ ‫אז‬ ‫נוכל‬ ,‫המקורית‬ ‫במתודה‬ ‫שימוש‬ ‫לעשות‬ ‫נרצה‬ ‫זאת‬ ‫ובכל‬ ‫במידה‬super:‫כך‬ ‫בה‬ ‫ולהשתמש‬
public class Human {
public void cout() {
System.out.println("I'm a Human!");
}
}
public class Person extends Human {
public void cout() {
super.cout();
System.out.println("But not just a Human, I'm a person too");
}
}
‫המתודה‬ ‫את‬ ‫נפעיל‬ ‫כאשר‬ ,‫זה‬ ‫באופן‬cout()‫של‬ ‫אובייקט‬ ‫על‬Human:‫הפלט‬ ‫שורת‬ ‫את‬ ‫נקבל‬ ,
I'm a Human!
‫המתודה‬ ‫את‬ ‫נפעיל‬ ‫וכאשר‬cout()‫של‬ ‫אובייקט‬ ‫על‬Person:‫הפלט‬ ‫שורות‬ ‫את‬ ‫נקבל‬ ,
I'm a Human!
But not just a Human, I'm a person too
‫ה‬ ‫מבין‬ ‫הראשונה‬ ‫הפלט‬ ‫שורת‬-2‫הפעלת‬ ‫מעצם‬ ‫נובעת‬ ‫האחרונות‬cout()‫של‬Human:
super.cout();
‫של‬ ‫הגדרתה‬ ‫משאר‬ ‫ישירות‬ ‫נובעות‬ ‫השנייה‬ ‫הפלט‬ ‫ושורת‬cout()‫ב‬-Person:
System.out.println("But not just a Human, I'm a person too");
‫השמורה‬ ‫למילה‬ ‫שימושים‬ ‫עוד‬ ‫ישנם‬super.‫בהמשך‬ ‫אותם‬ ‫נזכיר‬ ,
‫שנקראת‬ ‫טכניקה‬ ‫על‬ ‫לדבר‬ ‫ניתן‬ ,‫המתחילים‬ ‫מהמתכנתים‬ ‫רבים‬ ‫בקרב‬ ‫לבלבול‬ ‫גורם‬ ,‫מה‬ ‫משום‬ ‫אך‬ ,‫לגמרי‬ ‫שונה‬ ‫באופן‬
‫העמסת‬:‫מתודות‬
‫העמסת‬-‫מתודות‬ ‫חפיפת‬–Method Overloading
‫שמקנה‬ ‫התנאי‬ .‫אופנים‬ '‫במס‬ ‫זהה‬ ‫שם‬ ‫בעלות‬ ‫למתודות‬ ‫קריאה‬ ‫ולאפשר‬ ‫המתודה‬ ‫אותה‬ ‫של‬ ‫גרסאות‬ '‫מס‬ ‫לייצר‬ ‫באפשרותנו‬
.‫החופפות‬ ‫המתודות‬ ‫בחתימות‬ ‫שוני‬ ‫על‬ ‫שמירה‬ ‫הוא‬ ‫הזו‬ ‫היכולת‬ ‫את‬ ‫לנו‬
‫שהיא‬ ‫הפרמטרים‬ '‫מס‬ ,‫המתודה‬ ‫משם‬ ‫מורכבת‬ ‫המתודה‬ ‫חתימת‬.‫המתודה‬ ‫של‬ ‫החזרה‬ ‫וערך‬ ‫סוגם‬ ,‫מקבלת‬
‫שמות‬ ‫את‬ ‫לשנות‬ ‫מספיק‬ ‫לא‬ ,‫כן‬ ‫וכמו‬ ‫בלבד‬ ‫שלהם‬ ‫החזרה‬ ‫בערך‬ ‫מזו‬ ‫זו‬ ‫שונות‬ ‫יהיו‬ ‫חופפות‬ ‫שמתודות‬ ‫מספיק‬ ‫לא‬ :‫לב‬ ‫נשים‬
!‫המתודה‬ ‫שמקבלת‬ ‫הפרמטרים‬
‫הפרמטרים‬ '‫מס‬ :‫הבאים‬ ‫מהשניים‬ ‫באחד‬ ‫לשוני‬ ‫נדאג‬ ‫אם‬ ,‫השם‬ ‫אותו‬ ‫בעלות‬ ‫חופפות‬ ‫מתודות‬ ‫לייצר‬ ‫יכולים‬ ‫אנו‬,‫מקבלות‬ ‫שהן‬
‫שהמתודה‬ ‫הפרמטרים‬ ‫טיפוסי‬ ‫של‬ ‫ההופעה‬ ‫בסדר‬ ‫לשוני‬ ‫נדאג‬ ‫אם‬ ‫היא‬ ‫נוספת‬ ‫אופציה‬ .‫מקבלות‬ ‫שהן‬ ‫הפרמטרים‬ ‫טיפוסי‬ ‫או‬
.‫מומלצת‬ ‫לא‬ ‫זו‬ ‫אופציה‬ ‫אך‬ ,‫מקבלת‬
:‫שהוזכרו‬ ‫לאפשרויות‬ ‫בהתאם‬ ,‫מתודות‬ ‫העמסת‬ ‫של‬ ‫למקרים‬ ‫דוגמאות‬ ‫נראה‬
public class ClassName {
public int getID(int number, char number2) {
return number*number+3;
}
public void getID(char number) { //Change in the number of the parameters
}
public int getID(int number) { //Change in the type of the parameter
return number*number+3;
}
public void getID(int number) { //Not enough changing only the return type
}
public int getID(char number2, int number) { //Not Recommended changing only d order
return number*number+3;
}
}
:‫הטכניקות‬ ‫שתי‬ ,‫לראות‬ ‫שניתן‬ ‫כפי‬‫דריסת‬‫ו‬ ‫מתודות‬‫העמסת‬‫כדי‬ ‫עד‬ ‫אפילו‬ ‫אולי‬ ,‫מהשנייה‬ ‫האחת‬ ‫בתכליתן‬ ‫שונות‬ ‫מתודות‬
:‫מהשנייה‬ ‫האחת‬ ‫לחלוטין‬ ‫הפוכות‬
‫לחלוטין‬ ‫לה‬ ‫זהה‬ ‫תהה‬ ‫הדורסת‬ ‫המתודה‬ ‫שחתימת‬ ‫כך‬ ,‫המקורית‬ ‫המתודה‬ ‫חתימת‬ ‫על‬ ‫לשמור‬ ‫עלינו‬ ,‫מתודה‬ ‫לדרוס‬ ‫מנת‬ ‫על‬
.‫ירושה‬ ‫רמת‬ ‫בכל‬ ‫בלבד‬ ‫אחת‬ ‫פעם‬ ‫מתודה‬ ‫לדרוס‬ ‫ניתן‬ ,‫מכך‬ ‫יוצא‬ ‫וכפועל‬
‫להעמ‬ ‫מנת‬ ‫על‬‫מתודה‬ ‫כל‬ ‫של‬ )‫המתודה‬ ‫שמקבלת‬ ‫הפרמטרים‬ ‫סוג‬ ‫או‬ '‫(מס‬ ‫החתימות‬ ‫בין‬ ‫מהותי‬ ‫לשוני‬ ‫לדאוג‬ ‫עלינו‬ ,‫מתודה‬ ‫יס‬
‫חתימות‬ ‫לבין‬ ‫שלה‬ ‫החתימה‬ ‫בין‬ ‫מהותי‬ ‫שוני‬ ‫יש‬ ‫עוד‬ ‫כל‬ ,‫פעמים‬ '‫מס‬ ‫מתודה‬ ‫כל‬ ‫להעמיס‬ ‫ניתן‬ ,‫כלומר‬ ,‫שלידה‬ ‫מזו‬ ‫מועמסת‬
.‫שהועמסו‬ ‫האחרות‬ ‫המתודות‬
‫בונות‬ ‫מתודות‬-Constructors
‫מת‬‫בונות‬ ‫ודות‬–‫בראש‬ ,‫אובייקט‬ ‫יצירת‬ ‫בעת‬ .‫יצרנו‬ ‫עתה‬ ‫שזה‬ ‫אובייקט‬ ‫לאתחל‬ ‫ע"מ‬ ‫נועדו‬ ‫אשר‬ ‫מתודות‬ ‫הן‬ ,‫קונסטרקטורים‬
‫לרשימת‬ ‫בהתאם‬ ,‫בונה‬ ‫מתודה‬ ‫תופעל‬ ,‫מכן‬ ‫לאחר‬ ‫מיד‬ ,‫שלהם‬ ‫המחדל‬ ‫ברירת‬ ‫בערכי‬ ‫המופע‬ ‫משתני‬ ‫יאותחלו‬ ‫ובראשונה‬
‫תופ‬ ,‫ערכים‬ ‫רשימת‬ ‫נשלחה‬ ‫לא‬ ‫אם‬ .‫היצירה‬ ‫בעת‬ ‫שנשלחה‬ ‫הערכים‬‫דפולטיבית‬ ‫בונה‬ ‫מתודה‬ ‫על‬–.‫פרמטרים‬ ‫ללא‬
‫אף‬ ‫ידינו‬ ‫על‬ ‫הוגדרה‬ ‫שלא‬ ‫בתנאי‬ ‫וזאת‬ ‫אוטומטי‬ ‫באופן‬ ‫תוגדר‬ ,‫ידינו‬ ‫על‬ ‫תוגדר‬ ‫לא‬ ‫אם‬ ‫גם‬ ,‫דפולטיבית‬ ‫בונה‬ ‫מתודה‬ ‫אותה‬
.‫פרמטרים‬ ‫מקבלת‬ ‫שכן‬ ‫כזו‬ ,‫אחרת‬ ‫בונה‬ ‫מתודה‬
‫בונה‬ ‫מתודה‬ ‫לאפשר‬ ‫וברצוננו‬ ‫פרמטרים‬ ‫שמקבלת‬ ‫בונה‬ ‫מתודה‬ ‫ידינו‬ ‫על‬ ‫הוגדרה‬ ‫אם‬‫עלינו‬ ‫יהיה‬ ,‫פרמטרים‬ ‫מקבלת‬ ‫שלא‬
.‫אוטומטי‬ ‫באופן‬ ‫תיווצר‬ ‫לא‬ ‫כבר‬ ‫היא‬ ,‫וכאמור‬ ‫היות‬ ‫ידני‬ ‫באופן‬ ‫אותה‬ ‫להגדיר‬
!‫שהוא‬ ‫סוג‬ ‫משום‬ ‫חזרה‬ ‫ערך‬ ‫וללא‬ ‫גישה‬ ‫במציין‬ ‫מקודמת‬ ,‫מוגדרת‬ ‫היא‬ ‫בה‬ ‫המחלקה‬ ‫כשם‬ ‫תמיד‬ ‫יהיה‬ ‫בונה‬ ‫מתודה‬ ‫של‬ ‫שמה‬
‫המחלקה‬ ‫עבור‬ ,‫לדוגמה‬ClassName‫ה‬ ‫ללא‬ ‫הבונה‬ ‫המתודה‬ ‫תוגדר‬:‫פרמטרים‬
public ClassName() {
}
‫הקונסטרקטורים‬ ‫בין‬ ‫שונות‬ ‫חתימות‬ ‫עפ"י‬ ,‫רגילות‬ ‫מתודות‬ ‫לחפיפה‬ ‫ניתנות‬ ‫בו‬ ‫האופן‬ ‫באותו‬ ‫לחפיפה‬ ‫ניתנות‬ ‫בונות‬ ‫מתודות‬
‫פרמטרים‬ ‫ללא‬ ‫בונה‬ ‫מתודה‬ ‫עוד‬ ‫תיווצר‬ ‫לא‬ ,‫יותר‬ ‫או‬ ‫אחד‬ ‫פרמטר‬ ‫עם‬ ‫בונה‬ ‫מתודה‬ ‫של‬ ‫הגדרה‬ ‫בעת‬ ,‫כאמור‬ .‫השונים‬
‫ועל‬ ,‫דפולטיבית‬.‫מפורש‬ ‫באופן‬ ‫להגדירה‬ ‫עלינו‬ ‫יש‬ ,‫כזו‬ ‫אחת‬ ‫של‬ ‫שירות‬ ‫לספק‬ ‫ברצוננו‬ ‫יש‬ ‫אם‬ ,‫כן‬
,‫לדוגמה‬ ,‫מהפרמטרים‬ ‫אלו‬ ‫אי‬ ‫לספק‬ ‫האובייקט‬ ‫ליוצר‬ ‫ולאפשר‬ ‫פרמטרים‬ ‫רשימת‬ ‫סמך‬ ‫על‬ ‫אובייקט‬ ‫לבנות‬ ‫נרצה‬ ,‫לעתים‬
‫בין‬ ‫פרמטרים‬ ‫של‬ '‫מס‬ ‫כל‬ ‫לנו‬ ‫לשלוח‬ ‫למשתמש‬ ‫לאפשר‬ ‫מעוניינים‬ ‫ואנו‬ ,‫משתנים‬ ‫ארבעה‬ ‫שלנו‬ ‫במחלקה‬0‫ל‬-4‫ובהתאם‬ ,
.‫הפרמטרים‬ ‫שאר‬ ‫של‬ ‫ידנית‬ ‫השלמה‬ ‫תוך‬ ‫האובייקט‬ ‫את‬ ‫נבנה‬ ,‫שנשלחו‬ ‫לפרמטרים‬
‫מתוך‬ ‫קריאה‬ ‫ולבצע‬ ‫הבונות‬ ‫המתודות‬ ‫של‬ ‫חפיפה‬ ‫לבצע‬ ‫צריכים‬ ‫אנו‬ ,‫יישלחו‬ ‫פרמטרים‬ ‫כמה‬ ‫מראש‬ ‫יודעים‬ ‫לא‬ ‫ואנו‬ ‫היות‬
‫ל‬ ‫בהתאם‬ ,‫התמונה‬ ‫את‬ ‫ונשלים‬ ‫נעטר‬ ‫אנו‬ ‫כשבדרך‬ ,‫אחרת‬ ‫בונה‬ ‫למתודה‬ ‫הבונה‬ ‫המתודה‬‫להציב‬ ‫מעוניינים‬ ‫שאנו‬ ‫ערכים‬
.‫מחדל‬ ‫כברירת‬
‫השמורה‬ ‫במילה‬ ‫שימוש‬ ‫באמצעות‬ ‫נעשית‬ ‫אחרת‬ ‫בונה‬ ‫מתודה‬ ‫מתוך‬ ‫בונה‬ ‫למתודה‬ ‫קריאה‬this‫הפרמטרים‬ ‫ורשימת‬
.‫אחרת‬ ‫למתודה‬ ‫קוראים‬ ‫שהיינו‬ ‫כשם‬ ‫בדיוק‬ ,‫בסוגריים‬
‫מחדל‬ ‫ברירת‬ ‫בערכי‬ ‫ומאתחלת‬ ‫ארבעה‬ ‫מתוך‬ ‫פרמטרים‬ ‫שני‬ ‫שמקבלת‬ ‫בונה‬ ‫מתודה‬ ‫למשל‬ ‫נגדיר‬:‫הנותרים‬ ‫השניים‬ ‫את‬
this(int a, int b, 1, 1);
‫הקוראת‬ ‫הבונה‬ ‫המתודה‬ ‫של‬ ‫הראשונה‬ ‫בשורה‬ ‫להיעשות‬ ‫חייבת‬ ‫שכזו‬ ‫קריאה‬.
‫שאר‬ ,‫כלומר‬ ,‫הקריאה‬ ‫התבצעה‬ ‫בה‬ ‫השורה‬ ‫לאחר‬ ‫מיד‬ ‫תמשיך‬ ‫התוכנית‬ ,‫שנקראה‬ ‫הבונה‬ ‫המתודה‬ ‫של‬ ‫פעולתה‬ ‫סיום‬ ‫לאחר‬
.‫הקריאה‬ ‫התבצעה‬ ‫בו‬ ‫בבנאי‬ ‫הקוד‬ ‫קטע‬
‫האוב‬ ‫בהם‬ ‫במקרים‬‫של‬ ‫בניה‬ ‫מתבצעת‬ ,‫ראשית‬ .‫מעט‬ ‫משתנה‬ ‫הפעולות‬ ‫סדר‬ ,‫אחרת‬ ‫ממחלקה‬ ‫שיורשת‬ ‫ממחלקה‬ ‫נוצר‬ ‫ייקט‬
‫של‬ ‫הבנאי‬ ‫הפעלת‬ ,‫ובסיומה‬ ‫הבסיס‬ ‫מחלקת‬ ‫של‬ ‫הבנאי‬ ‫של‬ ‫ברקע‬ ‫אוטומטית‬ ‫הפעלה‬ ‫כלומר‬ ,‫הבסיס‬ ‫ממחלקת‬ ‫אובייקט‬
.‫היורשת‬ ‫המחלקה‬
‫של‬ ‫לבנאי‬ ‫נגיע‬ ‫לבסוף‬ ,‫מורישות‬ ‫מחלקות‬ ‫לעוד‬ ‫בהיררכיה‬ ‫נעלה‬ ‫אם‬ ‫גם‬ ‫כך‬‫המחלקה‬Object,‫ואחריו‬ ,‫ראשון‬ ‫יופעל‬ ‫הוא‬ ,
.‫אחרון‬ ‫שיופעל‬ ‫לבנות‬ ‫מנסים‬ ‫שאנו‬ ‫האובייקט‬ ‫של‬ ‫לבנאי‬ ‫עד‬ ‫הבנאים‬ ‫שאר‬ ‫יופעלו‬ ,‫ההיררכיה‬ ‫במורד‬
‫שגיאת‬ ‫תתרחש‬ ,‫כזה‬ ‫אחד‬ ‫קיים‬ ‫לא‬ ‫אם‬ .‫פרמטרים‬ ‫מקבל‬ ‫שלא‬ ‫המחדל‬ ‫ברירת‬ ‫בנאי‬ ‫הוא‬ ‫אוטומטית‬ ‫שמופעל‬ ‫הבנאי‬
‫זו‬ ‫שגיאה‬ ‫לפתור‬ ‫מנת‬ ‫על‬ .‫קומפילציה‬:‫דרכים‬ ‫משתי‬ ‫באחת‬ ‫לפעול‬ ‫ניתן‬
:‫פרמטרים‬ ‫ללא‬ ‫בנאי‬ ‫הבסיס‬ ‫מחלקת‬ ‫להגדרת‬ ‫להוסיף‬ ,‫הראשונה‬
BaseClass() {
}
:‫המחדל‬ ‫ברירת‬ ‫מבנאי‬ ‫ששונה‬ ,‫הבסיס‬ ‫במחלקת‬ ‫המוגדר‬ ‫לבנאי‬ ‫קריאה‬ ‫לבצע‬ ,‫השנייה‬
super
‫השמורה‬ ‫המילה‬ ‫את‬ ‫שוב‬ ‫להזכיר‬ ‫נכון‬ ,‫זו‬ ‫בנקודה‬super.‫בונות‬ ‫מתודות‬ ‫של‬ ‫בהקשר‬ ‫בה‬ ‫השימוש‬ ‫לגבי‬ ‫ולהסביר‬
‫השמורה‬ ‫במילה‬ ‫שימוש‬ ‫ע"י‬ ‫תתבצע‬ ‫הבסיס‬ ‫מחלקת‬ ‫של‬ ‫לבנאי‬ ‫קריאה‬super.
:‫לדוגמה‬ ‫הבא‬ ‫באופן‬ ‫תתבצע‬ ,‫הבסיס‬ ‫במחלקת‬ ‫המחדל‬ ‫ברירת‬ ‫מבנאי‬ ‫שונה‬ ‫לבנאי‬ ‫קריאה‬
super(3,"to",6);
:‫לבנאי‬ ‫קריאה‬ ‫תתבצע‬ ‫זו‬ ‫בדרך‬
BaseClass(int a, String b, int c) {
}
.‫תתאפשר‬ ‫זו‬ ‫שקריאה‬ ‫כדי‬ ,‫בה‬ ‫מוגדר‬ ‫להיות‬ ‫צריך‬ ‫שהוא‬ ‫וכמובן‬
:‫הבא‬ ‫באופן‬ ‫הבהירות‬ ‫לשם‬ ‫ורק‬ ‫אך‬ ‫תיעשה‬ ‫וזו‬ ‫פרמטרים‬ ‫ללא‬ ‫לבנאי‬ ‫קריאה‬ ‫לבצע‬ ‫גם‬ ‫ניתן‬
super();
.‫מפורשות‬ ‫אותה‬ ‫נציין‬ ‫לא‬ ‫אם‬ ‫גם‬ ‫אוטומטית‬ ‫בצורה‬ ,‫כאמור‬ ,‫שמתבצעת‬ ‫קריאה‬ ‫זוהי‬
‫בשורה‬ ‫להיעשות‬ ‫חייבת‬ ‫שכזו‬ ‫קריאה‬‫הקוראת‬ ‫הבונה‬ ‫המתודה‬ ‫של‬ ‫הראשונה‬.
‫שימוש‬ ‫תוך‬ ‫במחלקה‬ ‫אחרת‬ ‫בונה‬ ‫למתודה‬ ‫קריאה‬ ‫שגם‬ ‫הגדרנו‬ ‫שהרי‬ ,‫קונפליקט‬ ‫קיים‬ ‫שבתיאוריה‬ ‫מבינים‬ ‫אנו‬ ,‫זו‬ ‫בנקודה‬
‫השמורה‬ ‫במילה‬this‫השמורה‬ ‫במילה‬ ‫שימוש‬ ‫תוך‬ ‫הבסיס‬ ‫ממחלקת‬ ‫בונה‬ ‫למתודה‬ ‫קריאה‬ ‫וגם‬super‫שתיהן‬ ‫חייבות‬ ,
‫להיעשות‬‫הראשונה‬ ‫בשורה‬‫של‬‫נשאלת‬ ,‫כן‬ ‫אם‬ ...‫אחת‬ ‫רק‬ ‫יש‬ ‫ראשונה‬ ‫ששורה‬ ‫לכולנו‬ ‫וברור‬ ,‫הקוראת‬ ‫הבונה‬ ‫המתודה‬
?‫השפה‬ ‫בדרישות‬ ‫סתירה‬ ‫כאן‬ ‫אין‬ ‫האם‬ ,‫השאלה‬
‫לא‬ ‫שזה‬ ‫כמובן‬ ‫אך‬ ,‫כאחד‬ ‫וותיקים‬ ‫מתחילים‬ ‫תכניתנים‬ ‫נופלים‬ ‫אליה‬ ‫מלכודת‬ ‫במעין‬ ‫מדובר‬ .‫שאין‬ ‫היא‬ ‫הברורה‬ ‫התשובה‬ ,‫ובכן‬
‫כד‬ ‫לפעול‬ ‫עלינו‬ ‫כיצד‬ ‫שנבין‬ ‫ע"מ‬ ‫מספיק‬‫הנכון‬ ‫השימוש‬ ‫אופן‬ ‫את‬ ‫ראשית‬ ‫להבין‬ ‫עלינו‬ ‫יהיה‬ ,‫כך‬ ‫לשם‬ .‫זו‬ ‫במלכודת‬ ‫ליפול‬ ‫לא‬ ‫י‬
‫ע"י‬ ‫המחלקה‬ ‫אותה‬ ‫מתוך‬ ‫לבנאים‬ ‫בקריאה‬this‫מאליו‬ ‫ברור‬ ‫יהיה‬ ,‫יעיל‬ ‫באופן‬ ‫זו‬ ‫בטכניקה‬ ‫להשתמש‬ ‫כיצד‬ ‫שנבין‬ ‫לאחר‬ .
.‫לעיל‬ ‫שתואר‬ ‫המלכודת‬ ‫למצב‬ ‫הפתרון‬
‫משתמש‬ ‫אנו‬ ‫בגינה‬ ‫הסיבה‬ ‫מהי‬ ,‫עצמנו‬ ‫את‬ ‫נשאל‬ ‫ראשית‬‫ב‬ ‫ים‬-this‫אם‬ ?‫בנאי‬ ‫של‬ ‫הגדרתו‬ ‫מתוך‬ ‫אחר‬ ‫לבנאי‬ ‫קריאה‬ ‫לשם‬
.‫קוד‬ ‫בשורות‬ ‫חיסכון‬ ‫לשם‬ ‫נעשה‬ ‫שהדבר‬ ‫להסכים‬ ‫נוכל‬ ,‫זו‬ ‫בטכניקה‬ ‫לשימוש‬ ‫האמתית‬ ‫הסיבה‬ ‫על‬ ‫לעומק‬ ‫נחשוב‬
‫תוך‬ ‫דפולטיביים‬ ‫ערכים‬ ‫אליו‬ ‫ישלחו‬ ‫הקונסטרקטורים‬ ‫ששאר‬ ‫זה‬ ‫יהיה‬ ‫פרמטרים‬ ‫הרבה‬ ‫הכי‬ ‫שמקבל‬ ‫שהבנאי‬ ‫הוא‬ ‫הרעיון‬
‫לו‬ ‫קריאה‬‫באמצעות‬this‫לבנאי‬ ‫ממנו‬ ‫לקרוא‬ ‫צורך‬ ‫כבר‬ ‫אין‬ ,‫הפרמטרים‬ ‫כל‬ ‫את‬ ‫שמקבל‬ ‫זה‬ ‫והוא‬ ‫היות‬ ,‫הגדרתו‬ ‫שבתחום‬ ‫כך‬ ,
‫ב‬ ‫בשימוש‬ ‫צורך‬ ‫באמת‬ ‫אין‬ ,‫כן‬ ‫ועל‬ ,‫פחות‬ ‫משוכלל‬-this‫ל‬ ‫שיקרא‬ ‫זה‬ ‫יהיה‬ ‫הוא‬ ‫ולכן‬ ‫בהגדרתו‬-super‫את‬ ‫פתרנו‬ ‫ובכך‬
.‫הבעיה‬
:‫הנ"ל‬ ‫להסבר‬ ‫מימוש‬ ‫נראה‬
public class BaseClass {
BaseClass() {
}
}
public class DerivedClass extends BaseClass {
DerivedClass() {
this(0,0,0);
}
DerivedClass(int i) {
this(i,0,0);
}
DerivedClass(int i, int j) {
this(i,j,0);
}
DerivedClass(int i, int j, int k) {
super();
}
}

Contenu connexe

Tendances

Object Oriented Programming with Java
Object Oriented Programming with JavaObject Oriented Programming with Java
Object Oriented Programming with Java
backdoor
 
Obyekt yönümlü proqramlaşdırma
Obyekt yönümlü proqramlaşdırmaObyekt yönümlü proqramlaşdırma
Obyekt yönümlü proqramlaşdırma
S H
 
Oop’nin temel ilkeleri
Oop’nin temel ilkeleriOop’nin temel ilkeleri
Oop’nin temel ilkeleri
metehanates
 
Exception handling
Exception handlingException handling
Exception handling
Iblesoft
 

Tendances (20)

Open Close Principle
Open Close PrincipleOpen Close Principle
Open Close Principle
 
Code Smells and Its type (With Example)
Code Smells and Its type (With Example)Code Smells and Its type (With Example)
Code Smells and Its type (With Example)
 
10. Obyekt-Yönümlü Proqramlaşdırmaya Giriş
10. Obyekt-Yönümlü Proqramlaşdırmaya Giriş10. Obyekt-Yönümlü Proqramlaşdırmaya Giriş
10. Obyekt-Yönümlü Proqramlaşdırmaya Giriş
 
2CPP14 - Abstraction
2CPP14 - Abstraction2CPP14 - Abstraction
2CPP14 - Abstraction
 
Object Oriented Programming with C#
Object Oriented Programming with C#Object Oriented Programming with C#
Object Oriented Programming with C#
 
concept of oops
concept of oopsconcept of oops
concept of oops
 
Object Oriented Programming with Java
Object Oriented Programming with JavaObject Oriented Programming with Java
Object Oriented Programming with Java
 
Obyekt yönümlü proqramlaşdırma
Obyekt yönümlü proqramlaşdırmaObyekt yönümlü proqramlaşdırma
Obyekt yönümlü proqramlaşdırma
 
Facade Design Pattern
Facade Design PatternFacade Design Pattern
Facade Design Pattern
 
Object Oriented Programing JAVA presentaion
Object Oriented Programing JAVA presentaionObject Oriented Programing JAVA presentaion
Object Oriented Programing JAVA presentaion
 
Oop’nin temel ilkeleri
Oop’nin temel ilkeleriOop’nin temel ilkeleri
Oop’nin temel ilkeleri
 
Polymorphism
PolymorphismPolymorphism
Polymorphism
 
Polymorphism
PolymorphismPolymorphism
Polymorphism
 
Learn C# Programming - Decision Making & Loops
Learn C# Programming - Decision Making & LoopsLearn C# Programming - Decision Making & Loops
Learn C# Programming - Decision Making & Loops
 
Chap2 2 1
Chap2 2 1Chap2 2 1
Chap2 2 1
 
Exception handling
Exception handlingException handling
Exception handling
 
Java presentation
Java presentation Java presentation
Java presentation
 
UML Prezentation class diagram
UML Prezentation class diagramUML Prezentation class diagram
UML Prezentation class diagram
 
Inner classnotation in uml class diagram
Inner classnotation in uml class diagramInner classnotation in uml class diagram
Inner classnotation in uml class diagram
 
Android Training (Storing & Shared Preferences)
Android Training (Storing & Shared Preferences)Android Training (Storing & Shared Preferences)
Android Training (Storing & Shared Preferences)
 

Similaire à ג'אווה - תכנות מונחה עצמים - מתודות - דריסה/חפיפה, העמסה ומתודות בונות

Similaire à ג'אווה - תכנות מונחה עצמים - מתודות - דריסה/חפיפה, העמסה ומתודות בונות (8)

ג'אווה - תכנות מונחה עצמים - מתודות - שליפה והכנסה, סטטיות, סופיות ומתודות שע...
ג'אווה - תכנות מונחה עצמים - מתודות - שליפה והכנסה, סטטיות, סופיות ומתודות שע...ג'אווה - תכנות מונחה עצמים - מתודות - שליפה והכנסה, סטטיות, סופיות ומתודות שע...
ג'אווה - תכנות מונחה עצמים - מתודות - שליפה והכנסה, סטטיות, סופיות ומתודות שע...
 
תכנות מונחה עצמים - מחלקות
תכנות מונחה עצמים - מחלקותתכנות מונחה עצמים - מחלקות
תכנות מונחה עצמים - מחלקות
 
בדרך לפולימורפיזם - Using Virtual/Pure Virtual
בדרך לפולימורפיזם - Using Virtual/Pure Virtualבדרך לפולימורפיזם - Using Virtual/Pure Virtual
בדרך לפולימורפיזם - Using Virtual/Pure Virtual
 
javascript
javascriptjavascript
javascript
 
Selenium WebDriver
Selenium WebDriverSelenium WebDriver
Selenium WebDriver
 
C# .net lecture 2 Objects 2
C# .net lecture 2 Objects 2C# .net lecture 2 Objects 2
C# .net lecture 2 Objects 2
 
הורשה והיררכיה של מחלקות
הורשה והיררכיה של מחלקותהורשה והיררכיה של מחלקות
הורשה והיררכיה של מחלקות
 
תכנות מדעי: פייתון: הרצאה 10: : תחום הכרעה
תכנות מדעי: פייתון: הרצאה 10: : תחום הכרעהתכנות מדעי: פייתון: הרצאה 10: : תחום הכרעה
תכנות מדעי: פייתון: הרצאה 10: : תחום הכרעה
 

Plus de מורן אלקובי

Plus de מורן אלקובי (20)

ג'אווה - תכנות מונחה עצמים - רב צורתיות
ג'אווה - תכנות מונחה עצמים - רב צורתיותג'אווה - תכנות מונחה עצמים - רב צורתיות
ג'אווה - תכנות מונחה עצמים - רב צורתיות
 
ג'אווה - תכנות מונחה עצמים - הורשה
ג'אווה - תכנות מונחה עצמים - הורשהג'אווה - תכנות מונחה עצמים - הורשה
ג'אווה - תכנות מונחה עצמים - הורשה
 
ג'אווה - תכנות מונחה עצמים - מצייני גישה/רמות חשיפה
ג'אווה - תכנות מונחה עצמים - מצייני גישה/רמות חשיפהג'אווה - תכנות מונחה עצמים - מצייני גישה/רמות חשיפה
ג'אווה - תכנות מונחה עצמים - מצייני גישה/רמות חשיפה
 
MySQL - מילון השאילתא
MySQL - מילון השאילתאMySQL - מילון השאילתא
MySQL - מילון השאילתא
 
SQL - שפת הגדרת הנתונים
SQL - שפת הגדרת הנתוניםSQL - שפת הגדרת הנתונים
SQL - שפת הגדרת הנתונים
 
SQL - מודל הנתונים
SQL - מודל הנתוניםSQL - מודל הנתונים
SQL - מודל הנתונים
 
SQL - אלגברה של יחסים
SQL - אלגברה של יחסיםSQL - אלגברה של יחסים
SQL - אלגברה של יחסים
 
SQL - מודל ישויות קשרים
SQL - מודל ישויות קשריםSQL - מודל ישויות קשרים
SQL - מודל ישויות קשרים
 
MySQL - מרכיבי השאילתא
MySQL - מרכיבי השאילתאMySQL - מרכיבי השאילתא
MySQL - מרכיבי השאילתא
 
טורי חזקה
טורי חזקהטורי חזקה
טורי חזקה
 
כלים מתמטיים - הוכחות משפטים
כלים מתמטיים - הוכחות משפטיםכלים מתמטיים - הוכחות משפטים
כלים מתמטיים - הוכחות משפטים
 
DLL מדריך לעבודה עם
DLL מדריך לעבודה עםDLL מדריך לעבודה עם
DLL מדריך לעבודה עם
 
עבודה עם קבצים בשפת סי
עבודה עם קבצים בשפת סיעבודה עם קבצים בשפת סי
עבודה עם קבצים בשפת סי
 
מצגת בלוגיקה למדעי המחשב
מצגת בלוגיקה למדעי המחשבמצגת בלוגיקה למדעי המחשב
מצגת בלוגיקה למדעי המחשב
 
מצגת לוגיקה מלאה חלק 3 מתוך 3
מצגת לוגיקה מלאה חלק 3 מתוך 3מצגת לוגיקה מלאה חלק 3 מתוך 3
מצגת לוגיקה מלאה חלק 3 מתוך 3
 
מצגת לוגיקה מלאה חלק 2 מתוך 3
מצגת לוגיקה מלאה חלק 2 מתוך 3מצגת לוגיקה מלאה חלק 2 מתוך 3
מצגת לוגיקה מלאה חלק 2 מתוך 3
 
מצגת לוגיקה מלאה חלק 1 מתוך 3
מצגת לוגיקה מלאה חלק 1 מתוך 3מצגת לוגיקה מלאה חלק 1 מתוך 3
מצגת לוגיקה מלאה חלק 1 מתוך 3
 
מתמטיקה דיסקרטית - תורת הקבוצות - פעולות
מתמטיקה דיסקרטית - תורת הקבוצות - פעולותמתמטיקה דיסקרטית - תורת הקבוצות - פעולות
מתמטיקה דיסקרטית - תורת הקבוצות - פעולות
 
מתמטיקה דיסקרטית - תורת הקבוצות - הגדרות
מתמטיקה דיסקרטית - תורת הקבוצות - הגדרותמתמטיקה דיסקרטית - תורת הקבוצות - הגדרות
מתמטיקה דיסקרטית - תורת הקבוצות - הגדרות
 
מתמטיקה דיסקרטית - קבוצות קשרים, דואליות
מתמטיקה דיסקרטית - קבוצות קשרים, דואליותמתמטיקה דיסקרטית - קבוצות קשרים, דואליות
מתמטיקה דיסקרטית - קבוצות קשרים, דואליות
 

ג'אווה - תכנות מונחה עצמים - מתודות - דריסה/חפיפה, העמסה ומתודות בונות

  • 1.
  • 2. ‫מתודות‬ ‫דריסת‬–Method Overriding ‫כאשר‬ ‫מתודות‬ ‫דריסת‬ ‫של‬ ‫יישומים‬ ‫ראינו‬ .‫הזדמנויות‬ '‫במס‬ ‫מתודות‬ ‫דריסת‬ ‫נושא‬ ‫את‬ ‫אחרת‬ ‫או‬ ‫זו‬ ‫בצורה‬ ‫הזכרנו‬ ,‫כה‬ ‫עד‬ ‫המתודות‬ ‫את‬ ‫הזכרנו‬finalize()‫ו‬-equals()‫של‬ ‫ההגדרה‬ ‫בטווח‬ ‫כשדרסנו‬ ‫אנונימיות‬ ‫פנימיות‬ ‫מחלקות‬ ‫בנושא‬ ‫בפרק‬ ,‫כן‬ ‫וכמו‬ ‫בדוגמה‬ :‫(תזכורת‬ ‫ייחודי‬ ‫אובייקט‬ ‫קבלת‬ ‫לשם‬ ‫הרחבנו‬ ‫אותה‬ ‫המחלקה‬ ‫של‬ ‫המתודות‬ ‫אחת‬ ‫את‬ ‫האנונימית‬ ‫הפנימית‬ ‫המחלקה‬ ‫המתודה‬ ‫את‬ ‫דרסנו‬ ‫שראינו‬cout().) ‫במ‬ ‫חדשה‬ ‫מתודה‬ ‫להגדיר‬ ‫עלינו‬ ,‫קיימת‬ ‫מתודה‬ ‫לדרוס‬ ‫מנת‬ ‫על‬‫בעלת‬ ‫שתהה‬ ,‫ממשק‬ ‫מממשת‬ ‫או‬ ‫ממחלקה‬ ‫שיורשת‬ ‫חלקה‬ ‫אינה‬ ‫לדרוס‬ ‫מעוניינים‬ ‫אותה‬ ‫שהמתודה‬ ‫ובלבד‬ ‫הגדרתה‬ ‫את‬ ‫להחליף‬ ‫מעוניינים‬ ‫שאנו‬ ‫המתודה‬ ‫כמו‬ ‫בדיוק‬ ‫החתימה‬ ‫אותה‬ .)‫בהמשך‬ ‫(יוסבר‬ ‫סופית‬ ‫מתודה‬ :‫דוגמה‬ ‫נראה‬ public class BaseClass { protected int getID(int number) { return number*number+3; } } public class DerivedClass extends BaseClass { protected int getID(int number) { return number+3; } } ‫הוגדרה‬ ‫שבו‬ ‫באופן‬getID‫הלוגיקה‬ ‫ורק‬ )‫הכרחי‬ ‫תנאי‬ ,‫(כאמור‬ ‫לחלוטין‬ ‫זהה‬ ‫המתודה‬ ‫של‬ ‫והחתימה‬ ‫היות‬ ,‫היורשת‬ ‫במחלקה‬ ‫היא‬ ‫כאשר‬ ,‫שונה‬ ‫הפנימית‬‫מחדש‬ ‫שהוגדרה‬ ‫המתודה‬ ,‫היורשת‬ ‫מהמחלקה‬ ‫אובייקט‬ ‫על‬ ‫תופעל‬-‫ולא‬ ‫שתופעל‬ ‫זו‬ ‫היא‬ ‫נדרסה‬ ‫את‬ ‫מחדש‬ ‫מגדירים‬ ‫ולא‬ ,‫דריסה‬ ‫מבצעים‬ ‫היינו‬ ‫לא‬ ‫שאם‬ ‫כמובן‬ .‫המקורית‬ ‫המתודה‬getID,‫בה‬ ‫להשתמש‬ ‫יכולים‬ ‫היינו‬ ‫עדיין‬ .‫הבסיס‬ ‫ממחלקת‬ ‫שהגיעה‬ ‫זו‬ ‫הייתה‬ ‫שלה‬ ‫שההגדרה‬ ‫רק‬ super ‫השמורה‬ ‫המילה‬ ‫את‬ ‫להזכיר‬ ‫נכון‬ ,‫זו‬ ‫בנקודה‬super.‫מתודות‬ ‫דריסת‬ ‫של‬ ‫בהקשר‬ ‫בה‬ ‫השימוש‬ ‫לגבי‬ ‫ולהסביר‬ ‫השמורה‬ ‫המילה‬ ‫בפנינו‬ ‫נגישה‬ ‫הופכת‬ ,‫יורשת‬ ‫מחלקה‬ ‫של‬ ‫הגדרתה‬ ‫בתחום‬ ‫נמצאים‬ ‫אנו‬ ‫כאשר‬super‫בצירוף‬ ,‫בה‬ ‫שימוש‬ . .‫מרחיבה‬ ‫שלנו‬ ‫המחלקה‬ ‫אותה‬ ‫הבסיס‬ ‫מחלקת‬ ‫ומתודות‬ ‫משתני‬ ‫את‬ ‫בפנינו‬ ‫יחשוף‬ ‫אחריה‬ ‫מפרידה‬ ‫נקודה‬ ‫מגדירים‬ ‫שאנו‬ ‫המחלקה‬ ‫אם‬ ‫שהרי‬ ,‫מיותר‬ ‫הוא‬ ‫זו‬ ‫שמורה‬ ‫במילה‬ ‫ששימוש‬ ‫לחשוב‬ ‫כמובן‬ ‫נוכל‬ ,‫לעומק‬ ‫כך‬ ‫על‬ ‫נחשוב‬ ‫לא‬ ‫אם‬ ‫לג‬ ‫יכולים‬ ‫שאנו‬ ‫ידוע‬ ,‫הבסיס‬ ‫מחלקת‬ ‫את‬ ‫מרחיבה‬ ‫כרגע‬‫המילה‬ ‫בלי‬ ‫גם‬ ‫שלה‬ ‫ומתודות‬ ‫למשתנים‬ ‫שת‬super‫יהיה‬ ‫אכן‬ ‫והדבר‬ , .‫חדשה‬ ‫מתודה‬ ‫ע"י‬ ‫דרסנו‬ ‫הגדרתה‬ ‫שאת‬ ‫במתודה‬ ‫מדובר‬ ‫כאשר‬ :‫אחד‬ ‫במקרה‬ ‫מלבד‬ ‫המקרים‬ ‫בכל‬ ‫נכון‬ ,‫בירושה‬ ‫שהגיעה‬ ‫המתודה‬ ‫לחתימת‬ ‫לחלוטין‬ ‫זהה‬ ‫המתודה‬ ‫וחתימת‬ ‫היות‬ ,‫יורשת‬ ‫במחלקה‬ ‫מתודה‬ ‫דריסת‬ ‫שביצענו‬ ‫מרגע‬ ‫במח‬ ‫למתודה‬ ‫הגישה‬.‫הדורסת‬ ‫המתודה‬ ‫ע"י‬ ‫מוסתרת‬ ‫להיות‬ ‫הופכת‬ ‫הבסיס‬ ‫לקת‬
  • 3. ‫השמורה‬ ‫המילה‬ ‫את‬ ‫לשלוף‬ ‫אז‬ ‫נוכל‬ ,‫המקורית‬ ‫במתודה‬ ‫שימוש‬ ‫לעשות‬ ‫נרצה‬ ‫זאת‬ ‫ובכל‬ ‫במידה‬super:‫כך‬ ‫בה‬ ‫ולהשתמש‬ public class Human { public void cout() { System.out.println("I'm a Human!"); } } public class Person extends Human { public void cout() { super.cout(); System.out.println("But not just a Human, I'm a person too"); } } ‫המתודה‬ ‫את‬ ‫נפעיל‬ ‫כאשר‬ ,‫זה‬ ‫באופן‬cout()‫של‬ ‫אובייקט‬ ‫על‬Human:‫הפלט‬ ‫שורת‬ ‫את‬ ‫נקבל‬ , I'm a Human! ‫המתודה‬ ‫את‬ ‫נפעיל‬ ‫וכאשר‬cout()‫של‬ ‫אובייקט‬ ‫על‬Person:‫הפלט‬ ‫שורות‬ ‫את‬ ‫נקבל‬ , I'm a Human! But not just a Human, I'm a person too ‫ה‬ ‫מבין‬ ‫הראשונה‬ ‫הפלט‬ ‫שורת‬-2‫הפעלת‬ ‫מעצם‬ ‫נובעת‬ ‫האחרונות‬cout()‫של‬Human: super.cout(); ‫של‬ ‫הגדרתה‬ ‫משאר‬ ‫ישירות‬ ‫נובעות‬ ‫השנייה‬ ‫הפלט‬ ‫ושורת‬cout()‫ב‬-Person: System.out.println("But not just a Human, I'm a person too"); ‫השמורה‬ ‫למילה‬ ‫שימושים‬ ‫עוד‬ ‫ישנם‬super.‫בהמשך‬ ‫אותם‬ ‫נזכיר‬ , ‫שנקראת‬ ‫טכניקה‬ ‫על‬ ‫לדבר‬ ‫ניתן‬ ,‫המתחילים‬ ‫מהמתכנתים‬ ‫רבים‬ ‫בקרב‬ ‫לבלבול‬ ‫גורם‬ ,‫מה‬ ‫משום‬ ‫אך‬ ,‫לגמרי‬ ‫שונה‬ ‫באופן‬ ‫העמסת‬:‫מתודות‬
  • 4. ‫העמסת‬-‫מתודות‬ ‫חפיפת‬–Method Overloading ‫שמקנה‬ ‫התנאי‬ .‫אופנים‬ '‫במס‬ ‫זהה‬ ‫שם‬ ‫בעלות‬ ‫למתודות‬ ‫קריאה‬ ‫ולאפשר‬ ‫המתודה‬ ‫אותה‬ ‫של‬ ‫גרסאות‬ '‫מס‬ ‫לייצר‬ ‫באפשרותנו‬ .‫החופפות‬ ‫המתודות‬ ‫בחתימות‬ ‫שוני‬ ‫על‬ ‫שמירה‬ ‫הוא‬ ‫הזו‬ ‫היכולת‬ ‫את‬ ‫לנו‬ ‫שהיא‬ ‫הפרמטרים‬ '‫מס‬ ,‫המתודה‬ ‫משם‬ ‫מורכבת‬ ‫המתודה‬ ‫חתימת‬.‫המתודה‬ ‫של‬ ‫החזרה‬ ‫וערך‬ ‫סוגם‬ ,‫מקבלת‬ ‫שמות‬ ‫את‬ ‫לשנות‬ ‫מספיק‬ ‫לא‬ ,‫כן‬ ‫וכמו‬ ‫בלבד‬ ‫שלהם‬ ‫החזרה‬ ‫בערך‬ ‫מזו‬ ‫זו‬ ‫שונות‬ ‫יהיו‬ ‫חופפות‬ ‫שמתודות‬ ‫מספיק‬ ‫לא‬ :‫לב‬ ‫נשים‬ !‫המתודה‬ ‫שמקבלת‬ ‫הפרמטרים‬ ‫הפרמטרים‬ '‫מס‬ :‫הבאים‬ ‫מהשניים‬ ‫באחד‬ ‫לשוני‬ ‫נדאג‬ ‫אם‬ ,‫השם‬ ‫אותו‬ ‫בעלות‬ ‫חופפות‬ ‫מתודות‬ ‫לייצר‬ ‫יכולים‬ ‫אנו‬,‫מקבלות‬ ‫שהן‬ ‫שהמתודה‬ ‫הפרמטרים‬ ‫טיפוסי‬ ‫של‬ ‫ההופעה‬ ‫בסדר‬ ‫לשוני‬ ‫נדאג‬ ‫אם‬ ‫היא‬ ‫נוספת‬ ‫אופציה‬ .‫מקבלות‬ ‫שהן‬ ‫הפרמטרים‬ ‫טיפוסי‬ ‫או‬ .‫מומלצת‬ ‫לא‬ ‫זו‬ ‫אופציה‬ ‫אך‬ ,‫מקבלת‬ :‫שהוזכרו‬ ‫לאפשרויות‬ ‫בהתאם‬ ,‫מתודות‬ ‫העמסת‬ ‫של‬ ‫למקרים‬ ‫דוגמאות‬ ‫נראה‬ public class ClassName { public int getID(int number, char number2) { return number*number+3; } public void getID(char number) { //Change in the number of the parameters } public int getID(int number) { //Change in the type of the parameter return number*number+3; } public void getID(int number) { //Not enough changing only the return type } public int getID(char number2, int number) { //Not Recommended changing only d order return number*number+3; } } :‫הטכניקות‬ ‫שתי‬ ,‫לראות‬ ‫שניתן‬ ‫כפי‬‫דריסת‬‫ו‬ ‫מתודות‬‫העמסת‬‫כדי‬ ‫עד‬ ‫אפילו‬ ‫אולי‬ ,‫מהשנייה‬ ‫האחת‬ ‫בתכליתן‬ ‫שונות‬ ‫מתודות‬ :‫מהשנייה‬ ‫האחת‬ ‫לחלוטין‬ ‫הפוכות‬ ‫לחלוטין‬ ‫לה‬ ‫זהה‬ ‫תהה‬ ‫הדורסת‬ ‫המתודה‬ ‫שחתימת‬ ‫כך‬ ,‫המקורית‬ ‫המתודה‬ ‫חתימת‬ ‫על‬ ‫לשמור‬ ‫עלינו‬ ,‫מתודה‬ ‫לדרוס‬ ‫מנת‬ ‫על‬ .‫ירושה‬ ‫רמת‬ ‫בכל‬ ‫בלבד‬ ‫אחת‬ ‫פעם‬ ‫מתודה‬ ‫לדרוס‬ ‫ניתן‬ ,‫מכך‬ ‫יוצא‬ ‫וכפועל‬ ‫להעמ‬ ‫מנת‬ ‫על‬‫מתודה‬ ‫כל‬ ‫של‬ )‫המתודה‬ ‫שמקבלת‬ ‫הפרמטרים‬ ‫סוג‬ ‫או‬ '‫(מס‬ ‫החתימות‬ ‫בין‬ ‫מהותי‬ ‫לשוני‬ ‫לדאוג‬ ‫עלינו‬ ,‫מתודה‬ ‫יס‬ ‫חתימות‬ ‫לבין‬ ‫שלה‬ ‫החתימה‬ ‫בין‬ ‫מהותי‬ ‫שוני‬ ‫יש‬ ‫עוד‬ ‫כל‬ ,‫פעמים‬ '‫מס‬ ‫מתודה‬ ‫כל‬ ‫להעמיס‬ ‫ניתן‬ ,‫כלומר‬ ,‫שלידה‬ ‫מזו‬ ‫מועמסת‬ .‫שהועמסו‬ ‫האחרות‬ ‫המתודות‬
  • 5. ‫בונות‬ ‫מתודות‬-Constructors ‫מת‬‫בונות‬ ‫ודות‬–‫בראש‬ ,‫אובייקט‬ ‫יצירת‬ ‫בעת‬ .‫יצרנו‬ ‫עתה‬ ‫שזה‬ ‫אובייקט‬ ‫לאתחל‬ ‫ע"מ‬ ‫נועדו‬ ‫אשר‬ ‫מתודות‬ ‫הן‬ ,‫קונסטרקטורים‬ ‫לרשימת‬ ‫בהתאם‬ ,‫בונה‬ ‫מתודה‬ ‫תופעל‬ ,‫מכן‬ ‫לאחר‬ ‫מיד‬ ,‫שלהם‬ ‫המחדל‬ ‫ברירת‬ ‫בערכי‬ ‫המופע‬ ‫משתני‬ ‫יאותחלו‬ ‫ובראשונה‬ ‫תופ‬ ,‫ערכים‬ ‫רשימת‬ ‫נשלחה‬ ‫לא‬ ‫אם‬ .‫היצירה‬ ‫בעת‬ ‫שנשלחה‬ ‫הערכים‬‫דפולטיבית‬ ‫בונה‬ ‫מתודה‬ ‫על‬–.‫פרמטרים‬ ‫ללא‬ ‫אף‬ ‫ידינו‬ ‫על‬ ‫הוגדרה‬ ‫שלא‬ ‫בתנאי‬ ‫וזאת‬ ‫אוטומטי‬ ‫באופן‬ ‫תוגדר‬ ,‫ידינו‬ ‫על‬ ‫תוגדר‬ ‫לא‬ ‫אם‬ ‫גם‬ ,‫דפולטיבית‬ ‫בונה‬ ‫מתודה‬ ‫אותה‬ .‫פרמטרים‬ ‫מקבלת‬ ‫שכן‬ ‫כזו‬ ,‫אחרת‬ ‫בונה‬ ‫מתודה‬ ‫בונה‬ ‫מתודה‬ ‫לאפשר‬ ‫וברצוננו‬ ‫פרמטרים‬ ‫שמקבלת‬ ‫בונה‬ ‫מתודה‬ ‫ידינו‬ ‫על‬ ‫הוגדרה‬ ‫אם‬‫עלינו‬ ‫יהיה‬ ,‫פרמטרים‬ ‫מקבלת‬ ‫שלא‬ .‫אוטומטי‬ ‫באופן‬ ‫תיווצר‬ ‫לא‬ ‫כבר‬ ‫היא‬ ,‫וכאמור‬ ‫היות‬ ‫ידני‬ ‫באופן‬ ‫אותה‬ ‫להגדיר‬ !‫שהוא‬ ‫סוג‬ ‫משום‬ ‫חזרה‬ ‫ערך‬ ‫וללא‬ ‫גישה‬ ‫במציין‬ ‫מקודמת‬ ,‫מוגדרת‬ ‫היא‬ ‫בה‬ ‫המחלקה‬ ‫כשם‬ ‫תמיד‬ ‫יהיה‬ ‫בונה‬ ‫מתודה‬ ‫של‬ ‫שמה‬ ‫המחלקה‬ ‫עבור‬ ,‫לדוגמה‬ClassName‫ה‬ ‫ללא‬ ‫הבונה‬ ‫המתודה‬ ‫תוגדר‬:‫פרמטרים‬ public ClassName() { } ‫הקונסטרקטורים‬ ‫בין‬ ‫שונות‬ ‫חתימות‬ ‫עפ"י‬ ,‫רגילות‬ ‫מתודות‬ ‫לחפיפה‬ ‫ניתנות‬ ‫בו‬ ‫האופן‬ ‫באותו‬ ‫לחפיפה‬ ‫ניתנות‬ ‫בונות‬ ‫מתודות‬ ‫פרמטרים‬ ‫ללא‬ ‫בונה‬ ‫מתודה‬ ‫עוד‬ ‫תיווצר‬ ‫לא‬ ,‫יותר‬ ‫או‬ ‫אחד‬ ‫פרמטר‬ ‫עם‬ ‫בונה‬ ‫מתודה‬ ‫של‬ ‫הגדרה‬ ‫בעת‬ ,‫כאמור‬ .‫השונים‬ ‫ועל‬ ,‫דפולטיבית‬.‫מפורש‬ ‫באופן‬ ‫להגדירה‬ ‫עלינו‬ ‫יש‬ ,‫כזו‬ ‫אחת‬ ‫של‬ ‫שירות‬ ‫לספק‬ ‫ברצוננו‬ ‫יש‬ ‫אם‬ ,‫כן‬ ,‫לדוגמה‬ ,‫מהפרמטרים‬ ‫אלו‬ ‫אי‬ ‫לספק‬ ‫האובייקט‬ ‫ליוצר‬ ‫ולאפשר‬ ‫פרמטרים‬ ‫רשימת‬ ‫סמך‬ ‫על‬ ‫אובייקט‬ ‫לבנות‬ ‫נרצה‬ ,‫לעתים‬ ‫בין‬ ‫פרמטרים‬ ‫של‬ '‫מס‬ ‫כל‬ ‫לנו‬ ‫לשלוח‬ ‫למשתמש‬ ‫לאפשר‬ ‫מעוניינים‬ ‫ואנו‬ ,‫משתנים‬ ‫ארבעה‬ ‫שלנו‬ ‫במחלקה‬0‫ל‬-4‫ובהתאם‬ , .‫הפרמטרים‬ ‫שאר‬ ‫של‬ ‫ידנית‬ ‫השלמה‬ ‫תוך‬ ‫האובייקט‬ ‫את‬ ‫נבנה‬ ,‫שנשלחו‬ ‫לפרמטרים‬ ‫מתוך‬ ‫קריאה‬ ‫ולבצע‬ ‫הבונות‬ ‫המתודות‬ ‫של‬ ‫חפיפה‬ ‫לבצע‬ ‫צריכים‬ ‫אנו‬ ,‫יישלחו‬ ‫פרמטרים‬ ‫כמה‬ ‫מראש‬ ‫יודעים‬ ‫לא‬ ‫ואנו‬ ‫היות‬ ‫ל‬ ‫בהתאם‬ ,‫התמונה‬ ‫את‬ ‫ונשלים‬ ‫נעטר‬ ‫אנו‬ ‫כשבדרך‬ ,‫אחרת‬ ‫בונה‬ ‫למתודה‬ ‫הבונה‬ ‫המתודה‬‫להציב‬ ‫מעוניינים‬ ‫שאנו‬ ‫ערכים‬ .‫מחדל‬ ‫כברירת‬ ‫השמורה‬ ‫במילה‬ ‫שימוש‬ ‫באמצעות‬ ‫נעשית‬ ‫אחרת‬ ‫בונה‬ ‫מתודה‬ ‫מתוך‬ ‫בונה‬ ‫למתודה‬ ‫קריאה‬this‫הפרמטרים‬ ‫ורשימת‬ .‫אחרת‬ ‫למתודה‬ ‫קוראים‬ ‫שהיינו‬ ‫כשם‬ ‫בדיוק‬ ,‫בסוגריים‬ ‫מחדל‬ ‫ברירת‬ ‫בערכי‬ ‫ומאתחלת‬ ‫ארבעה‬ ‫מתוך‬ ‫פרמטרים‬ ‫שני‬ ‫שמקבלת‬ ‫בונה‬ ‫מתודה‬ ‫למשל‬ ‫נגדיר‬:‫הנותרים‬ ‫השניים‬ ‫את‬ this(int a, int b, 1, 1); ‫הקוראת‬ ‫הבונה‬ ‫המתודה‬ ‫של‬ ‫הראשונה‬ ‫בשורה‬ ‫להיעשות‬ ‫חייבת‬ ‫שכזו‬ ‫קריאה‬. ‫שאר‬ ,‫כלומר‬ ,‫הקריאה‬ ‫התבצעה‬ ‫בה‬ ‫השורה‬ ‫לאחר‬ ‫מיד‬ ‫תמשיך‬ ‫התוכנית‬ ,‫שנקראה‬ ‫הבונה‬ ‫המתודה‬ ‫של‬ ‫פעולתה‬ ‫סיום‬ ‫לאחר‬ .‫הקריאה‬ ‫התבצעה‬ ‫בו‬ ‫בבנאי‬ ‫הקוד‬ ‫קטע‬ ‫האוב‬ ‫בהם‬ ‫במקרים‬‫של‬ ‫בניה‬ ‫מתבצעת‬ ,‫ראשית‬ .‫מעט‬ ‫משתנה‬ ‫הפעולות‬ ‫סדר‬ ,‫אחרת‬ ‫ממחלקה‬ ‫שיורשת‬ ‫ממחלקה‬ ‫נוצר‬ ‫ייקט‬ ‫של‬ ‫הבנאי‬ ‫הפעלת‬ ,‫ובסיומה‬ ‫הבסיס‬ ‫מחלקת‬ ‫של‬ ‫הבנאי‬ ‫של‬ ‫ברקע‬ ‫אוטומטית‬ ‫הפעלה‬ ‫כלומר‬ ,‫הבסיס‬ ‫ממחלקת‬ ‫אובייקט‬ .‫היורשת‬ ‫המחלקה‬ ‫של‬ ‫לבנאי‬ ‫נגיע‬ ‫לבסוף‬ ,‫מורישות‬ ‫מחלקות‬ ‫לעוד‬ ‫בהיררכיה‬ ‫נעלה‬ ‫אם‬ ‫גם‬ ‫כך‬‫המחלקה‬Object,‫ואחריו‬ ,‫ראשון‬ ‫יופעל‬ ‫הוא‬ , .‫אחרון‬ ‫שיופעל‬ ‫לבנות‬ ‫מנסים‬ ‫שאנו‬ ‫האובייקט‬ ‫של‬ ‫לבנאי‬ ‫עד‬ ‫הבנאים‬ ‫שאר‬ ‫יופעלו‬ ,‫ההיררכיה‬ ‫במורד‬
  • 6. ‫שגיאת‬ ‫תתרחש‬ ,‫כזה‬ ‫אחד‬ ‫קיים‬ ‫לא‬ ‫אם‬ .‫פרמטרים‬ ‫מקבל‬ ‫שלא‬ ‫המחדל‬ ‫ברירת‬ ‫בנאי‬ ‫הוא‬ ‫אוטומטית‬ ‫שמופעל‬ ‫הבנאי‬ ‫זו‬ ‫שגיאה‬ ‫לפתור‬ ‫מנת‬ ‫על‬ .‫קומפילציה‬:‫דרכים‬ ‫משתי‬ ‫באחת‬ ‫לפעול‬ ‫ניתן‬ :‫פרמטרים‬ ‫ללא‬ ‫בנאי‬ ‫הבסיס‬ ‫מחלקת‬ ‫להגדרת‬ ‫להוסיף‬ ,‫הראשונה‬ BaseClass() { } :‫המחדל‬ ‫ברירת‬ ‫מבנאי‬ ‫ששונה‬ ,‫הבסיס‬ ‫במחלקת‬ ‫המוגדר‬ ‫לבנאי‬ ‫קריאה‬ ‫לבצע‬ ,‫השנייה‬ super ‫השמורה‬ ‫המילה‬ ‫את‬ ‫שוב‬ ‫להזכיר‬ ‫נכון‬ ,‫זו‬ ‫בנקודה‬super.‫בונות‬ ‫מתודות‬ ‫של‬ ‫בהקשר‬ ‫בה‬ ‫השימוש‬ ‫לגבי‬ ‫ולהסביר‬ ‫השמורה‬ ‫במילה‬ ‫שימוש‬ ‫ע"י‬ ‫תתבצע‬ ‫הבסיס‬ ‫מחלקת‬ ‫של‬ ‫לבנאי‬ ‫קריאה‬super. :‫לדוגמה‬ ‫הבא‬ ‫באופן‬ ‫תתבצע‬ ,‫הבסיס‬ ‫במחלקת‬ ‫המחדל‬ ‫ברירת‬ ‫מבנאי‬ ‫שונה‬ ‫לבנאי‬ ‫קריאה‬ super(3,"to",6); :‫לבנאי‬ ‫קריאה‬ ‫תתבצע‬ ‫זו‬ ‫בדרך‬ BaseClass(int a, String b, int c) { } .‫תתאפשר‬ ‫זו‬ ‫שקריאה‬ ‫כדי‬ ,‫בה‬ ‫מוגדר‬ ‫להיות‬ ‫צריך‬ ‫שהוא‬ ‫וכמובן‬ :‫הבא‬ ‫באופן‬ ‫הבהירות‬ ‫לשם‬ ‫ורק‬ ‫אך‬ ‫תיעשה‬ ‫וזו‬ ‫פרמטרים‬ ‫ללא‬ ‫לבנאי‬ ‫קריאה‬ ‫לבצע‬ ‫גם‬ ‫ניתן‬ super(); .‫מפורשות‬ ‫אותה‬ ‫נציין‬ ‫לא‬ ‫אם‬ ‫גם‬ ‫אוטומטית‬ ‫בצורה‬ ,‫כאמור‬ ,‫שמתבצעת‬ ‫קריאה‬ ‫זוהי‬ ‫בשורה‬ ‫להיעשות‬ ‫חייבת‬ ‫שכזו‬ ‫קריאה‬‫הקוראת‬ ‫הבונה‬ ‫המתודה‬ ‫של‬ ‫הראשונה‬. ‫שימוש‬ ‫תוך‬ ‫במחלקה‬ ‫אחרת‬ ‫בונה‬ ‫למתודה‬ ‫קריאה‬ ‫שגם‬ ‫הגדרנו‬ ‫שהרי‬ ,‫קונפליקט‬ ‫קיים‬ ‫שבתיאוריה‬ ‫מבינים‬ ‫אנו‬ ,‫זו‬ ‫בנקודה‬ ‫השמורה‬ ‫במילה‬this‫השמורה‬ ‫במילה‬ ‫שימוש‬ ‫תוך‬ ‫הבסיס‬ ‫ממחלקת‬ ‫בונה‬ ‫למתודה‬ ‫קריאה‬ ‫וגם‬super‫שתיהן‬ ‫חייבות‬ , ‫להיעשות‬‫הראשונה‬ ‫בשורה‬‫של‬‫נשאלת‬ ,‫כן‬ ‫אם‬ ...‫אחת‬ ‫רק‬ ‫יש‬ ‫ראשונה‬ ‫ששורה‬ ‫לכולנו‬ ‫וברור‬ ,‫הקוראת‬ ‫הבונה‬ ‫המתודה‬ ?‫השפה‬ ‫בדרישות‬ ‫סתירה‬ ‫כאן‬ ‫אין‬ ‫האם‬ ,‫השאלה‬ ‫לא‬ ‫שזה‬ ‫כמובן‬ ‫אך‬ ,‫כאחד‬ ‫וותיקים‬ ‫מתחילים‬ ‫תכניתנים‬ ‫נופלים‬ ‫אליה‬ ‫מלכודת‬ ‫במעין‬ ‫מדובר‬ .‫שאין‬ ‫היא‬ ‫הברורה‬ ‫התשובה‬ ,‫ובכן‬ ‫כד‬ ‫לפעול‬ ‫עלינו‬ ‫כיצד‬ ‫שנבין‬ ‫ע"מ‬ ‫מספיק‬‫הנכון‬ ‫השימוש‬ ‫אופן‬ ‫את‬ ‫ראשית‬ ‫להבין‬ ‫עלינו‬ ‫יהיה‬ ,‫כך‬ ‫לשם‬ .‫זו‬ ‫במלכודת‬ ‫ליפול‬ ‫לא‬ ‫י‬ ‫ע"י‬ ‫המחלקה‬ ‫אותה‬ ‫מתוך‬ ‫לבנאים‬ ‫בקריאה‬this‫מאליו‬ ‫ברור‬ ‫יהיה‬ ,‫יעיל‬ ‫באופן‬ ‫זו‬ ‫בטכניקה‬ ‫להשתמש‬ ‫כיצד‬ ‫שנבין‬ ‫לאחר‬ . .‫לעיל‬ ‫שתואר‬ ‫המלכודת‬ ‫למצב‬ ‫הפתרון‬ ‫משתמש‬ ‫אנו‬ ‫בגינה‬ ‫הסיבה‬ ‫מהי‬ ,‫עצמנו‬ ‫את‬ ‫נשאל‬ ‫ראשית‬‫ב‬ ‫ים‬-this‫אם‬ ?‫בנאי‬ ‫של‬ ‫הגדרתו‬ ‫מתוך‬ ‫אחר‬ ‫לבנאי‬ ‫קריאה‬ ‫לשם‬ .‫קוד‬ ‫בשורות‬ ‫חיסכון‬ ‫לשם‬ ‫נעשה‬ ‫שהדבר‬ ‫להסכים‬ ‫נוכל‬ ,‫זו‬ ‫בטכניקה‬ ‫לשימוש‬ ‫האמתית‬ ‫הסיבה‬ ‫על‬ ‫לעומק‬ ‫נחשוב‬ ‫תוך‬ ‫דפולטיביים‬ ‫ערכים‬ ‫אליו‬ ‫ישלחו‬ ‫הקונסטרקטורים‬ ‫ששאר‬ ‫זה‬ ‫יהיה‬ ‫פרמטרים‬ ‫הרבה‬ ‫הכי‬ ‫שמקבל‬ ‫שהבנאי‬ ‫הוא‬ ‫הרעיון‬ ‫לו‬ ‫קריאה‬‫באמצעות‬this‫לבנאי‬ ‫ממנו‬ ‫לקרוא‬ ‫צורך‬ ‫כבר‬ ‫אין‬ ,‫הפרמטרים‬ ‫כל‬ ‫את‬ ‫שמקבל‬ ‫זה‬ ‫והוא‬ ‫היות‬ ,‫הגדרתו‬ ‫שבתחום‬ ‫כך‬ , ‫ב‬ ‫בשימוש‬ ‫צורך‬ ‫באמת‬ ‫אין‬ ,‫כן‬ ‫ועל‬ ,‫פחות‬ ‫משוכלל‬-this‫ל‬ ‫שיקרא‬ ‫זה‬ ‫יהיה‬ ‫הוא‬ ‫ולכן‬ ‫בהגדרתו‬-super‫את‬ ‫פתרנו‬ ‫ובכך‬ .‫הבעיה‬
  • 7. :‫הנ"ל‬ ‫להסבר‬ ‫מימוש‬ ‫נראה‬ public class BaseClass { BaseClass() { } } public class DerivedClass extends BaseClass { DerivedClass() { this(0,0,0); } DerivedClass(int i) { this(i,0,0); } DerivedClass(int i, int j) { this(i,j,0); } DerivedClass(int i, int j, int k) { super(); } }