נשלח בתאריך: 20 December 2007 בשעה 19:20 | | IP רשוּם
|
|
|
|
קוד:
public class A { public A (int i) { System.out.println (i); } }
public class B extends A { public B (int i) { A a = new A(2); System.out.println(i); } } |
|
|
1.האם הקטע תקין או שגוי? אם שגוי, הסבירו מדוע. אם תקין, כתבו מה יודפס כתוצאה מביצוע הפקודה A a = new B(5);ddd
2.מה צריך לשנות, מבלי להוסיף או לשנות פקודות println כדי שהפלט יהיה : 2 5
3.מה צריך לשנות, מבלי להוסיף או לשנות פקודות println כדי שהפלט יהיה : 5
לגבי 1 ברגע שהגדרתי למחלקה A קונסטרקטור כלשהו, המערכת כבר לא תייצר עבורי default constructor, כלומר כזה בלי פרמטרים.
המחלקה B יורשת מ A, אבל היא לא מעבירה פרמטרים לקונסטרקטור של A. לכן זה בכלל לא אמור לעבור קומפילציה. צריך במפורש ב קונסטרקטור של B לקרוא למתודה super, כלומר ל קונסטרקטור של מחלקת האב, עם פרמטרים מתאימים לפי מה שאני רוצה שיודפס. ז"א צריךsuper(i)ddd ב-B כפקודה ראשונה
לגבי 2,3 אפשר עזרה?
|