One: תכונה מוגנת x, f(x) מוסיפה ל-x, toString="x="+x. Two יורשת מ-One, דורסת f כך שהיא מחסירה ואז קוראת super.f (מוסיפה) — נטו ללא שינוי בקריאה בודדת. arr[5]=arr[1] יוצר alias (לא עצם חדש).
One: תכונה מוגנת x, f(x) מוסיפה ל-x, toString="x="+x. Two יורשת מ-One, דורסת f כך שהיא מחסירה ואז קוראת super.f (מוסיפה) — נטו ללא שינוי בקריאה בודדת. arr[5]=arr[1] יוצר alias (לא עצם חדש).
public class One {
protected int x;
public One(){ this.x = 1; }
public One(int x) { this.x = x; }
public void f(int x) { this.x += x; }
public String toString() { return "x=" + this.x; }
} // end of One
public class Two extends One {
public Two() { super(3); }
public Two(int x) { super.f(x); f(x); }
public void f(int x) { this.x -= x; super.f(x); }
} // end of Two
public class Tester {
public static void print(One[] arr) {
for (int i=0; i < arr.length; i++)
System.out.println(i+" "+arr[i]);
}
public static void doF(One[] arr, int num) {
for (int i=0; i < arr.length; i++)
arr[i].f(num);
}
public static void what(One[] arr) {
int k=0;
for (int i = 0; i < arr.length; i++)
if (arr[i] instanceof Two) k++;
k = arr.length - k;
System.out.println("k = "+ k);
}
public static void main(String[] args) {
One[] arr = new One[6];
arr[0]= new One();
arr[1]= new One(3);
arr[2] = new Two();
arr[3] = new Two(2);
arr[4] = new Two(5);
arr[5] = arr[1];
print(arr);
doF(arr, 2);
print(arr);
what(arr);
}
}
סעיף א
עקבו אחרי ביצוע הפעולה הראשית ורשמו מה יהיה הפלט של הפעולה. יש להציג את כל העצמים שנוצרו ואת השינויים בערכי התכונות שלהם במהלך הביצוע.
סעיף ב
מה מבצעת הפעולה what/What?
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.