לפניך המחלקות A ו-B extends A (B: A ב-C#), שלכל אחת שדה פרטי x נפרד (B מצהירה מחדש שדה x משלה — אינה משתמשת בזה של A). getX/GetX, tripleX/TripleX ו-sub/Sub דרוסות ב-B; doubleX/DoubleX ו-calc/Calc מוגדרות רק ב-A ואינן נדרסות; tenTimesX/TenTimesX ו-baseX/BaseX מוגדרות רק ב-B.
לפניך המחלקות A ו-B extends A (B: A ב-C#), שלכל אחת שדה פרטי x נפרד (B מצהירה מחדש שדה x משלה — אינה משתמשת בזה של A). getX/GetX, tripleX/TripleX ו-sub/Sub דרוסות ב-B; doubleX/DoubleX ו-calc/Calc מוגדרות רק ב-A ואינן נדרסות; tenTimesX/TenTimesX ו-baseX/BaseX מוגדרות רק ב-B.
public class A {
private int x;
public A() { this.x = 0; }
public A(int x) { this.x = x; }
public virtual int GetX() { return x; }
public void DoubleX() { this.x = 2 * GetX(); }
public virtual void TripleX() { this.x = 3 * GetX(); }
public virtual void Sub() { this.x = x - 1; }
public void Calc() { Sub(); }
public override string ToString() { return "xA=" + this.x; }
}
public class B : A {
private int x;
public B() : base() { this.x = 1; }
public B(int x) : base(x) { this.x = -x; }
public B(int xA, int xB) : base(xA) { this.x = xB; }
public override int GetX() { return x; }
public int BaseX() { return base.GetX(); }
public void TenTimesX() { this.x = 10 * GetX(); }
public override void TripleX() { this.x = 3 * GetX(); }
public override void Sub() { this.x = x - 2; }
public override string ToString() { return base.ToString() + " xB=" + this.x + ";"; }
}
לפניך סדרת הוראות שהפלט שלה צריך להיות: xA=1 xB=20; (ארבע פעמים, מופרד ברווחים). בסדרת ההוראות נפלה שגיאת הידור. תקן את השגיאה כדי שתתקבל הפלט הנכון: A a1 = new B(1, 20); Object obj = a1; B b1 = a1; A a2 = a1; System.out.println(a1+" "+obj+" "+a2+" "+b1);
לפניך סדרת הוראות (aa=new B(3,10); aa.sub(); מערך Object בגודל 6 עם A(),A(5),B(),B(5),B(2,4) ואיבר aa; ואז ((A)ar[3]).tripleX(); ו-((B)ar[4]).tenTimesX();). הצג את העצמים הנוצרים ולכל עצם הצג עם ערכי התכונות שלו.
בעבור a1=new A(1); a2=new B(2,99); בצע במקום //*** בפעולה הראשית: a2.doubleX(); System.out.println(a2); קבע אם הקטע תקין. אם תקין — כתוב את הפלט המתקבל.
בצע במקום //***: a2.tenTimesX(); System.out.println(a2.tenTimesX()); קבע אם הקטע תקין או אינו תקין; אם אינו תקין — קבע אם השגיאה היא שגיאת הידור או שגיאת זמן ריצה.
בצע במקום //***: if (a2 instanceof B) { a2.tenTimesX(); System.out.println(a2); } קבע אם הקטע תקין או אינו תקין; אם אינו תקין — קבע אם השגיאה היא שגיאת הידור או שגיאת זמן ריצה.
בצע במקום //***: ((B)a1).tenTimesX(); System.out.println(a1); קבע אם הקטע תקין או אינו תקין; אם אינו תקין — קבע אם השגיאה היא שגיאת הידור או שגיאת זמן ריצה.
בצע במקום //***: a2.calc(); System.out.println(a2); קבע אם הקטע תקין. אם תקין — כתוב את הפלט המתקבל.
בצע במקום //***: B bb = (B)a2; System.out.println(bb.baseX()); קבע אם הקטע תקין. אם תקין — כתוב את הפלט המתקבל.
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.