csharp
public class A { protected virtual void A1() { Console.WriteLine("Hello A"); } protected void A2() { A1(); } }
public class B : A { protected override void A1() { Console.WriteLine("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
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.