שאלת מבחן במבוא למדעי המחשב - האוניברסיטה הפתוחה 2022 - ירושה
נתונות המחלקות A, B, D ו-Driver (כמתואר בשאלה 4).
(ב) (3 נקודות) -
נניח שנתונות שתי הפקודות הבאות:
מה יהיה הערך של המשתנה k לאחר ביצוע הפקודות?
(ב) (3 נקודות) -
נניח שנתונות שתי הפקודות הבאות:
מה יהיה הערך של המשתנה k לאחר ביצוע הפקודות?
העתק שאלה
שתף שאלה
סמן כחשוב
סמן כבוצע
האוניברסיטה הפתוחה912022סמסטר ב
★★★★★
ירושהפולימורפיזםמחלקותתכנות מונחה עצמיםOverloadingמעקב אחר קוד
a מטיפוס סטטי A ודינמי B. קודם חשבו את _x אחרי new B(3), ואז הפעילו a.f(6) ואחריו a.f(result). שימו לב לטיפוס הסטטי של a בקריאה לf.
שלב 1:
- בנאי A():
- בנאי B(3):
- אחרי הבנאי:
שלב 2:
-
- (שימו לב: f(int) לא משנה את _x, רק מחזירה ערך. _x עדיין 4)
שלב 3:
-
התשובה: k = 14
a = new B(3)- בנאי A():
_x = 1- בנאי B(3):
_x = f(3) = _x + 3 = 1 + 3 = 4- אחרי הבנאי:
_x = 4שלב 2:
a.f(6) - הטיפוס הסטטי של a הוא A, והפרמטר 6 הוא int. נקראת f(int x) - dynamic binding - נבחרת f(int) של B.-
f(6) = _x + 6 = 4 + 6 = 10- (שימו לב: f(int) לא משנה את _x, רק מחזירה ערך. _x עדיין 4)
שלב 3:
a.f(10) - שוב f(int) של B.-
f(10) = _x + 10 = 4 + 10 = 14התשובה: k = 14