java
public class A { protected void a1() { System.out.println("Hello A"); } protected void a2() { a1(); } }
public class B extends A { protected void a1() { System.out.println("Bye B"); } }
סעיף א
נתון קטע קוד שרץ ללא שגיאות:
A x = new B(t, s);
h.g(n, d);
עבור כל אחד מההיגדים 1-6 ציינו האם הוא נכון או אינו נכון. הסבירו את תשובתכם.
- הפעולה g חייבת להיות ציבורית (public).
- t הוא בהכרח משתנה מטיפוס פשוט (כמו: int, double וכד').
- h הוא בהכרח אובייקט.
- d יכול להיות שם של פעולה.
- B היא בהכרח מחלקה שיורשת מ-A (גם אם לא ישירות).
- ייתכן ש-A היא מחלקה שיורשת מ-B.
סעיף ב
(אין קשר לסעיף א') נתונה המחלקה A הבאה (a1 מדפיסה "Hello A"; a2 קוראת ל-a1). בקובץ נפרד, הגדירו מחלקה נוספת B שיורשת מהמחלקה A. במחלקה B ביצעו דריסה לפעולה a1 והיא מדפיסה "Bye B". מה יקרה אם נפעיל על אובייקט מסוג B את הפעולה a2?
- הפלט יהיה: Hello A
- הפלט יהיה: Bye B
- הפלט יהיה: Hello A / Bye B
- הפלט יהיה: Bye B / Hello A
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.