המחלקה Y מגדירה שתי גרסאות עמוסות (overload) של do1: do1(int) ו-do1(String), ופעולה do2(int) שקוראת ל-do1. Z יורשת מ-Y, דורסת (override) רק את do1(int), ומוסיפה do2() בלי פרמטרים (העמסה חדשה, לא דריסה) ו-do3(int). בכל אחד מ-12 קטעי הקוד העצמאיים מציבים קטע אחד בפעולת main/Main וקובעים אם הוא תקין - ואם כן, מה הפלט; אם לא - למה.
המחלקה Y מגדירה שתי גרסאות עמוסות (overload) של do1: do1(int) ו-do1(String), ופעולה do2(int) שקוראת ל-do1. Z יורשת מ-Y, דורסת (override) רק את do1(int), ומוסיפה do2() בלי פרמטרים (העמסה חדשה, לא דריסה) ו-do3(int). בכל אחד מ-12 קטעי הקוד העצמאיים מציבים קטע אחד בפעולת main/Main וקובעים אם הוא תקין - ואם כן, מה הפלט; אם לא - למה.
public class Y
{
public Y()
{
Console.WriteLine("ctor Y");
}
public virtual void Do1(int x)
{
Console.WriteLine("Y Do1 int " + x);
}
public void Do1(string str)
{
Console.WriteLine("Y Do1 String " + str);
}
public void Do2(int x)
{
Console.WriteLine("Y Do2 " + x);
Do1(x);
}
}
public class Z : Y
{
public Z()
{
Console.WriteLine("ctor Z");
}
public override void Do1(int x)
{
Console.WriteLine("Z Do1 int " + x);
}
public void Do2()
{
Console.WriteLine("Z Do2");
Do1(2);
}
public void Do3(int x)
{
Console.WriteLine("Z Do3 " + x);
Do1(3);
}
}
public class Tester{
public static void Main(string[] args)
{
}
}
קטע קוד 1: יש לציין האם הקוד תקין. אם הקוד תקין - כתבו את הפלט. אם הקוד אינו תקין, הסבירו את השגיאה. Java: Y y = new Y(); y.do1(2); C#: Y y = new Y(); y.Do1(2);
קטע קוד 2: יש לציין האם הקוד תקין. אם הקוד תקין - כתבו את הפלט. אם הקוד אינו תקין, הסבירו את השגיאה. Java: Z z = new Z(); z.do1("str"); C#: Z z = new Z(); z.Do1("str");
קטע קוד 3: יש לציין האם הקוד תקין. אם הקוד תקין - כתבו את הפלט. אם הקוד אינו תקין, הסבירו את השגיאה. Java: Z z = new Z(); Y y = z; y.do1("str"); C#: Z z = new Z(); Y y = z; y.Do1("str");
קטע קוד 4: יש לציין האם הקוד תקין. אם הקוד תקין - כתבו את הפלט. אם הקוד אינו תקין, הסבירו את השגיאה. Java: Y y = new Y(); Z z = y; z.do1(2); C#: Y y = new Y(); Z z = y; z.Do1(2);
קטע קוד 5: יש לציין האם הקוד תקין. אם הקוד תקין - כתבו את הפלט. אם הקוד אינו תקין, הסבירו את השגיאה. Java: Y y = new Y(); Z z = (Z)y; z.do1(2); C#: Y y = new Y(); Z z = (Z)y; z.Do1(2);
קטע קוד 6: יש לציין האם הקוד תקין. אם הקוד תקין - כתבו את הפלט. אם הקוד אינו תקין, הסבירו את השגיאה. Java: Y yz = new Z(); yz.do1("str"); C#: Y yz = new Z(); yz.Do1("str");
קטע קוד 7: יש לציין האם הקוד תקין. אם הקוד תקין - כתבו את הפלט. אם הקוד אינו תקין, הסבירו את השגיאה. Java: Y yz = new Z(); yz.do3(4); C#: Y yz = new Z(); yz.Do3(4);
קטע קוד 8: יש לציין האם הקוד תקין. אם הקוד תקין - כתבו את הפלט. אם הקוד אינו תקין, הסבירו את השגיאה. Java: Z z = new Z(); z.do2(); C#: Z z = new Z(); z.Do2();
קטע קוד 9: יש לציין האם הקוד תקין. אם הקוד תקין - כתבו את הפלט. אם הקוד אינו תקין, הסבירו את השגיאה. Java: Z yz = new Y(); yz.do2(); C#: Z yz = new Y(); yz.Do2();
קטע קוד 10: יש לציין האם הקוד תקין. אם הקוד תקין - כתבו את הפלט. אם הקוד אינו תקין, הסבירו את השגיאה. Java: Y yz = new Z(); yz.do2(); C#: Y yz = new Z(); yz.Do2();
קטע קוד 11: יש לציין האם הקוד תקין. אם הקוד תקין - כתבו את הפלט. אם הקוד אינו תקין, הסבירו את השגיאה. Java: Y yz = new Z(); ((Z)yz).do2(); C#: Y yz = new Z(); ((Z)yz).Do2();
קטע קוד 12: יש לציין האם הקוד תקין. אם הקוד תקין - כתבו את הפלט. אם הקוד אינו תקין, הסבירו את השגיאה. Java: Y yz = new Z(); ((Z)yz).do1("hh"); C#: Y yz = new Z(); ((Z)yz).Do1("hh");
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.