אתם מתרגלים שאלה מתוך מה"ט מבני נתונים ותכנות מונחה עצמים — הנדסאי תוכנהמבחן 2022 · קיץ מועד א · שאלה 4כל שאלות המבחן ←
תכנות מונחה עצמים›פולימורפיזם ומחלקות מופשטות

java

public class A { protected int num; public A(int n) { num = n; } public int getNum() { return num; }

public boolean f(A a)
{
    System.out.println("F in A");
    return num == a.num * 2;
}

}// end of class A

public class B extends A { public B(int n) { super(n); } public boolean f(B b) { System.out.println("F in B"); return num == b.num; } }// end of class B

public class C extends A { public C (int n) { super(n); System.out.println("F in C"); } public boolean f(A a) { return a instanceof C && num == 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. כתבו עבור כל אחד מהסעיפים, אם הקוד תקין או לא. אם הקוד תקין, יש לציין מה יהיה הפלט; אם הקוד אינו תקין — יש להסביר למה הוא אינו תקין ולציין את סוג השגיאה (קומפילציה או זמן ריצה). שימו לב שאין קשר בין סעיפים!

  1. System.out.println(y1.getNum()==((B)z1).getNum());
  2. System.out.println(y1.f(y2));
  3. System.out.println(y2.f(y1));
  4. System.out.println(z1.f(z2));
  5. System.out.println(z1.f(y1));
  6. System.out.println(z2.f((C)y2));
שאלות ותגובות על השאלה

🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות

שאלו כאן — ותקבלו מענה מוסמך.

🎓 מרצה לתכנות עונה כאן — תקבלו מענה מקצועי