אתם מתרגלים שאלה מתוך מה"ט מבני נתונים ותכנות מונחה עצמים — הנדסאי תוכנהמבחן 2022 · אביב מועד ב · שאלה 11כל שאלות המבחן ←
תכנות מונחה עצמים›פולימורפיזם ומחלקות מופשטות

java

public class Father {

public Father() {
}
public void smile() {
    System.out.println("Father is smiling");
}
public void run() {
    System.out.println("Father is running");
}

}

public class Son extends Father {

public Son() {
    super();
}
public void smile() {
    System.out.println("Son is smiling");
}
public void run() {
    System.out.println("Son is running");
}
public void work() {
    System.out.println("Son is working");
}

}

public class GrandSon extends Son {

public GrandSon() {
    super();
}
public void smile() {
    System.out.println("GrandSon is smiling");
}
public void run() {
    System.out.println("GrandSon is running");
}
public void play() {
    System.out.println("GrandSon is playing");
}

}

סעיף א

עבור כל אחד משלושת קטעי הקוד הבאים, רשמו אם הוא תקין או לא. אם הקוד תקין – ציינו מה יהיה הפלט, אם הקוד אינו תקין – הסבירו מהו סוג השגיאה (שגיאת קומפילציה או שגיאת זמן ריצה).

  1. Father f = (Son)(new GrandSon());
  2. Object o = new Son(); Father f = o;
  3. Father f = new Father(); Object o = f; GrandSon gs = (GrandSon)o;
סעיף ב

עבור כל אחד מחמשת קטעי הקוד הבאים רשמו אם הוא תקין או לא. אם הקוד תקין – ציינו מה יהיה הפלט, אם הקוד אינו תקין – הסבירו מהו סוג השגיאה (שגיאת קומפילציה או שגיאת זמן ריצה).

  1. Son s = new Father(); s.smile();
  2. Father f = new Son(); f.smile();
  3. Father f = new Son(); f.work();
  4. Son s = new GrandSon(); s.play();
  5. Father f = new GrandSon(); f.smile();
סעיף ג

עקבו אחרי קטע קוד הבא ורשמו מה יהיה הפלט. Father[] f = new Father[3]; f[0] = new Father(); f[1] = new Son(); f[2] = new GrandSon(); for (int i = 0; i < f.length; i++) if (f[i] instanceof Son) ((Son)f[i]).run();

שאלות ותגובות על השאלה

🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות

שאלו כאן — ותקבלו מענה מוסמך.

🎓 מרצה לתכנות עונה כאן — תקבלו מענה מקצועי