csharp
public class A { protected int num; public A(int n) { num = n; }
public int GetNum()
{
return num;
}
public virtual bool F(A a)
{
Console.WriteLine("F in A");
return num == a.num * 2;
}
}// end of class A
public class B : A { public B(int n): base(n) { }
public bool F(B b)
{
Console.WriteLine("F in B");
return num == b.num;
}
}// end of class B
public class C : A { public C (int n): base(n) { }
public override bool F(A a)
{
Console.WriteLine("F in C");
return a is C && num == ((C)a).num;
}
} //end of class C
public class Driver { public static void Main(string[] args) { A y1 = new B(10); B y2 = new B(10); A z1 = new C(10); C z2 = new C(10); (****) } }
סעיף א
האם קיימת דריסה (overriding) או העמסה (overloading) של הפעולות? הסבירו את תשובתכם.
סעיף ב
בכל אחד מהסעיפים הבאים השורה (****) תוחלף בשורת קוד משורות הקוד 1-6. כתבו עבור כל אחד מהסעיפים, אם הקוד תקין או לא. אם הקוד תקין, יש לציין מה יהיה הפלט; אם הקוד אינו תקין — יש להסביר למה הוא אינו תקין ולציין את סוג השגיאה (קומפילציה או זמן ריצה). שימו לב שאין קשר בין סעיפים!
- Console.WriteLine(y1.GetNum()==((B)z1).GetNum());
- Console.WriteLine(y1.F(y2));
- Console.WriteLine(y2.F(y1));
- Console.WriteLine(z1.F(z2));
- Console.WriteLine(z1.F(y1));
- Console.WriteLine(z2.F((C)y2));
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.