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. כתבו עבור כל אחד מהסעיפים, אם הקוד תקין או לא. אם הקוד תקין, יש לציין מה יהיה הפלט; אם הקוד אינו תקין — יש להסביר למה הוא אינו תקין ולציין את סוג השגיאה (קומפילציה או זמן ריצה). שימו לב שאין קשר בין סעיפים!
- System.out.println(y1.getNum()==((B)z1).getNum());
- System.out.println(y1.f(y2));
- System.out.println(y2.f(y1));
- System.out.println(z1.f(z2));
- System.out.println(z1.f(y1));
- System.out.println(z2.f((C)y2));
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.