שאלת מבחן במבוא למדעי המחשב - האוניברסיטה הפתוחה 2021 - תכנות מונחה עצמים
נתון אותו הפרויקט עם המחלקות
סעיף 6:
האם הקוד גורם לשגיאת קומפילציה, שגיאת ריצה, או שהוא תקין? אם תקין, מה ערך
A (אבסטרקטית), B extends A, C extends B ו-Driver כמו בגוף שאלה 4.סעיף 6:
האם הקוד גורם לשגיאת קומפילציה, שגיאת ריצה, או שהוא תקין? אם תקין, מה ערך
_x באובייקט?העתק שאלה
שתף שאלה
סמן כחשוב
סמן כבוצע
האוניברסיטה הפתוחה922021סמסטר ב
★★★★★
תכנות מונחה עצמיםירושהפולימורפיזםמעקב אחר קודOverloading
הקאסט (B)a תקין כי a מצביע על C שהוא B. c1 מטיפוס C. הפרמטר מטיפוס סטטי B. C יש foo(B b). מה קורה בתוך C.foo(B b)?
הקוד תקין.
1.
2.
3.
ערך `_x` באובייקט c1 הוא: 7
1.
c1 = new C(2): C(2) -> super(2) -> B(2): _x = 22.
a = new C(3): C(3) -> super(3) -> B(3): _x = 33.
c1.foo((B)a): הקאסט (B)a תקין (a מצביע על C שהוא B). טיפוס סטטי של c1: C. פרמטר מטיפוס סטטי B. C יש foo(B b). C.foo(B b): super.foo(b) -> B.foo(B b): _x = _x * b._x = 2 * 3 = 6. חזרה ל-C: _x++ -> _x = 7.ערך `_x` באובייקט c1 הוא: 7