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

שתי מחלקות One ו-Two (Two extends One), כל אחת עם שני בנאים מועמסים ופעולות sum/setNum שנדרסות ב-Two. יש לעקוב אחרי הפעולה הראשית ולרשום את כל הפלט, כולל שורות ההדפסה שבתוך הבנאים עצמם.

public class One  {
    private int num1=0;
    private int num2=0;
    protected static int count =0;

    public One(int num)    {
        this.num1 = num;
        this.num2 = num;
        count++;
        System.out.println ("One ctor1");
    }

    public One(int num1, int num2)    {
        this.num1 = num1;
        this.num2 = num2;
        count++;
        System.out.println ("One ctor2");
    }

    public int sum()    {return this.num1+this.num2;}
    public void setNum(int num)    { this.num2 = num;}
    public static int getCount()    { return count;    }
}// end of class One

public class Two extends One  {
    private int num3 = 0;

    public Two(int num)  {
        super (num);
        this.num3 = num;
        System.out.println ("Two ctor1");
    }

    public Two(int num1, int num2, int num3)  {
        super(num1, num2);
        this.num3 = num3;
        System.out.println ("Two ctor2");
    }

    public int sum()  {return super.sum()+this.num3; }
    public void setNum(int num)   {this.num3 = num; }
    public static int getCount()  {return count;    }
}// end of class Two

public class Run  {
    public static void main (String [] args)     {
            One f1 = new One(10);
            One f2 = new One (10, 20);
            Two s1 = new Two(1);
            One f3 = new Two(2);
(1)         System.out.println ("count= " + One.getCount());
            f2 = s1;
(2)         System.out.println ("sum= " + f2.sum());
            s1.setNum(2);
(3)         System.out.println ("sum= " + s1.sum());
(4)         System.out.println ("sum= " + f2.sum());
            f2.setNum(4);
(5)         System.out.println ("sum= " + f2.sum());
            f1.setNum(4);
(6)         System.out.println ("sum= " + f1.sum());
(7)         System.out.println ("count= " + Two.getCount());
    }
}
סעיף א

מה הפלט המתקבל לאחר הפעלת השיטה main שבמחלקה Run? כתבו את מספר השורה ואז את הפלט המתקבל משורה זו. אם יש שגיאת קומפילציה, כתבו אותה.

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

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

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

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