שאלת מבחן במבוא למדעי המחשב - האוניברסיטה הפתוחה 2012 - תכנות מונחה עצמים

נתונות המחלקות A ו-B (כמתואר בשאלה 5).

ד.
העתק שאלה
שתף שאלה
סמן כחשוב
סמן כבוצע
האוניברסיטה הפתוחהמועד א22012סמסטר א
תכנות מונחה עצמיםמעקב אחר קוד
כאשר מעבירים אובייקט ל-System.out.println, Java קוראת אוטומטית למתודת toString() — שימו לב לטיפוס הדינמי של האובייקט כדי להחליט איזו גרסה של toString() תיקרא.
הקוד יוצר אובייקט מסוג A ומדפיס אותו:



מה קורה בפועל:


1. new A() — יוצר אובייקט מסוג A (הטיפוס הסטטי של המשתנה הוא גם A).
2. System.out.println(b1) — קריאה זו שקולה לכתיבה:


כלומר, Java קוראת אוטומטית למתודת toString() על האובייקט.


עקרון הפולימורפיזם: הקריאה ל-toString() נקבעת לפי הטיפוס הדינמי (הטיפוס האמיתי של האובייקט בזמן ריצה), שהוא A.


- אם מחלקה A מגדירה toString() — תיקרא הגרסה של A.
- אם A לא מגדירה toString() — תיקרא הגרסה שעוברת בירושה ממחלקת האב (או מ-Object אם אין אב מפורש), שמחזירה משהו בצורה:


לדוגמה: A@1b6d3586.


סיכום: הפלט הוא תוצאת toString() של אובייקט A — הגרסה הספציפית תלויה בהגדרת המחלקה A כפי שניתנה בשאלה 5.