נתונות שתי מחלקות A ו-B:
נתונות שתי מחלקות A ו-B:
public class A
{
protected int num;
public A() { }
public A (int num){ this.num = num; }
public int func(int k){ return k + this.num;}
}
public class B extends A {
private int x;
public boolean test() { return this.x > this.num; }
}
סעיף א
לפניכם שלושה היגדים. קבעו לכל אחד מהם אם הוא נכון או אינו נכון, ונמקו את קביעתכם.
- המחלקה A לא תעבור קומפילציה כי התכונה num אינה מקבלת ערך בבנאי הראשון.
- המחלקה B לא תעבור קומפילציה כי אין לה שום בנאי.
- המחלקה B לא תעבור קומפילציה כי בפעולה test יש שימוש בתכונה num והיא לא הוגדרה במחלקה זו.
סעיף ב
לכל אחת מהפעולות הבאות קבעו אם אפשר להגדיר אותה במחלקה A. אם הוספת הפעולה תגרום לשגיאה יש להסביר אותה.
public int func () { return 1; }public int func (double k){ return (int) k; }public double func (int k){ return 1.0*k; }public int func (int p){ return p; }public void func(int k, int p){ System.out.print(k*p); }
סעיף ג
כותרת הפעולה func במחלקה A השתנתה:
(סעיף זה בגרסת המקור מתייחס למילת המפתח virtual הספציפית ל-C#; ראו הערת נאמנות למקבילה ב-Java.)
לכל אחת מהפעולות הבאות קבעו אם אפשר להגדיר אותה במחלקה B. אם הוספת הפעולה תגרום לשגיאה יש להסביר אותה.
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.