המשימה
בנה שלוש מחלקות בשרשרת הורשה: • A — תכונה פרטית a, ופעולה getSum שמחזירה את a. • B — יורשת מ-A, מוסיפה תכונה b, ו-getSum שלה מחזירה a+b. • C — יורשת מ-B, מוסיפה תכונה c, ו-getSum שלה מחזירה a+b+c. המפתח: **אף מחלקה אינה מחשבת מחדש את הסכום של הרמות שמעליה.** כל אחת קוראת לגרסה של האב ומוסיפה עליה את התכונה שלה בלבד. דוגמה עבור C שנבנה עם a=1, b=2, c=3: getSum מחזיר 6 הנחיות: • קריאה לגרסה של האב מתוך הדריסה נעשית ב-super בג׳אווה וב-base ב-C#. בלעדיה, קריאה סתם ל-getSum בתוך getSum היא קריאה עצמית אינסופית. • כל בנאי מעביר לאב את מה ששייך לאב. • התכונות פרטיות בכל רמה, ואף אחת מהן אינה מוגדרת פעמיים. [טבלה]
קוד הפתיחה
class A {
private int a;
public A(int a) {
this.a = a;
}
public int getSum() {
return this.a;
}
}
class B extends A {
// הוסף כאן את התכונה b
public B(int a, int b) {
super(a);
// אתחל את b
}
@Override
public int getSum() {
// החזר את סכום האב ועוד b — היעזר ב-super.getSum()
return 0;
}
}
class C extends B {
// הוסף כאן את התכונה c
public C(int a, int b, int c) {
super(a, b);
// אתחל את c
}
@Override
public int getSum() {
// אותו רעיון, רמה אחת למטה
return 0;
}
}
public class Main {
public static void main(String[] args) {
System.out.println(new A(5).getSum()); // 5
System.out.println(new B(1, 2).getSum()); // 3
System.out.println(new C(1, 2, 3).getSum()); // 6
A x = new C(4, 5, 6);
System.out.println(x.getSum()); // 15
}
}
כדי לכתוב, להריץ ולקבל משוב — התחבר עם חשבון Google. לוקח שנייה.
המשוב נוצר על ידי AI ועשוי לטעות. אם אתה חושב שהפתרון שלך נכון —
כנראה שאתה צודק. הציון כאן הוא לתרגול בלבד ואינו מדווח לאיש.
אל תכתוב בקוד פרטים אישיים כמו שם מלא, טלפון או כתובת. הקוד נשלח לשירות
בדיקה חיצוני.