נתונות 2 המחלקות הבאות:

public class AA{
    public AA(){
        Console.WriteLine("AA constructor");
    }
    public virtual void One() {
        Console.WriteLine("One in AA");
    }
    public virtual void Two() {
        One();
    }
}
public class BB : AA{
    public BB(){
        Console.WriteLine("BB constructor");
    }
    public override void One(){
        Console.WriteLine("One in BB");
    }
    public override void Two() {
        Console.WriteLine("Two in BB");
    }
    public void Three() {
        base.Two();
    }
}
(א)נתון קטע הקוד הבא (מספרי שורות אינם חלק מהקוד):
```csharp
(1) AA a = new AA();
(2) BB b = new BB();
(3) AA ab = new BB();
(4) a.One();
(5) ab.One();
(6) b.One();
(7) a.Two();
(8) ab.Two();
(9) b.Two();
(10) ((BB)(ab)).Three();
(11) b.Three();
```

1. עקבו אחרי ביצוע קטע הקוד ורשמו מה יהיה הפלט.
2. האם אפשר להוסיף לקטע הקוד את 2 הפקודות הבאות? הסבירו את תשובתכם:
```csharp
a.Three();
((BB)a).Three();
```
(ב)כתבו פעולה המקבלת מערך הפניות לעצמים מסוג Object. הפעולה תדפיס כמה עצמים הם מסוג BB, כמה עצמים הם מסוג AA ולא סוג BB, וכמה עצמים הם לא מסוג AA.

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

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

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

רוצים לתרגל אלפי שאלות נוספות?

המשיכו לתרגול מלא עם משוב אישי ←

מבחני מה"ט אמיתיים · משוב מיידי · וידאו לכל נושא · מעקב התקדמות

המשיכו לתרגול מלא ←