csharp
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; Console.WriteLine(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(); Console.WriteLine(a2); קבע אם הקטע תקין. אם תקין — כתוב את הפלט המתקבל.
בצע במקום //***: a2.TenTimesX(); Console.WriteLine(a2.TenTimesX()); קבע אם הקטע תקין או אינו תקין; אם אינו תקין — קבע אם השגיאה היא שגיאת הידור או שגיאת זמן ריצה.
בצע במקום //***: if (a2 is B) { a2.TenTimesX(); Console.WriteLine(a2); } קבע אם הקטע תקין או אינו תקין; אם אינו תקין — קבע אם השגיאה היא שגיאת הידור או שגיאת זמן ריצה.
בצע במקום //***: ((B)a1).TenTimesX(); Console.WriteLine(a1); קבע אם הקטע תקין או אינו תקין; אם אינו תקין — קבע אם השגיאה היא שגיאת הידור או שגיאת זמן ריצה.
בצע במקום //***: a2.Calc(); Console.WriteLine(a2); קבע אם הקטע תקין. אם תקין — כתוב את הפלט המתקבל.
בצע במקום //***: B bb = (B)a2; Console.WriteLine(bb.BaseX()); קבע אם הקטע תקין. אם תקין — כתוב את הפלט המתקבל.
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.