שבעה תרגילי-הטלה בלתי-תלויים על אותה הכנה קבועה — כל אחד בודק בנפרד את ההבחנה בין 'מתקמפל' (יחס תת-טיפוס כלשהו קיים בין המוצהר ליעד) ל'מצליח בזמן ריצה' (הטיפוס האמיתי של העצם תואם ליעד).
שבעה תרגילי-הטלה בלתי-תלויים על אותה הכנה קבועה — כל אחד בודק בנפרד את ההבחנה בין 'מתקמפל' (יחס תת-טיפוס כלשהו קיים בין המוצהר ליעד) ל'מצליח בזמן ריצה' (הטיפוס האמיתי של העצם תואם ליעד).
Mammal mam = new Bulldog();
Dog dog = new Beagle();
Bulldog bul = new Bulldog();
עץ הירושה: Mammal (שורש) ← Dog, Cat; Dog ← Bulldog, Beagle; Cat ← Bengal. method()/Method() מוגדרת ב-Dog.
Mammal
├── Dog [method()/Method()]
│ ├── Bulldog
│ └── Beagle
└── Cat
└── Bengal
קבעו מה יקרה עבור ההוראה הבאה (בנפרד, לאחר קטע הקוד הנתון): Cat d1 = (Cat)mam; — תקין? שגיאת קומפילציה? שגיאת זמן ריצה?
קבעו מה יקרה עבור ההוראה הבאה (בנפרד, לאחר קטע הקוד הנתון): Cat d2 = (Cat)((Mammal)mam); — תקין? שגיאת קומפילציה? שגיאת זמן ריצה?
קבעו מה יקרה עבור ההוראה הבאה (בנפרד, לאחר קטע הקוד הנתון): Mammal d3 = (Cat)new Bengal(); — תקין? שגיאת קומפילציה? שגיאת זמן ריצה?
קבעו מה יקרה עבור ההוראה הבאה (בנפרד, לאחר קטע הקוד הנתון): Dog d4 = (Mammal)dog; — תקין? שגיאת קומפילציה? שגיאת זמן ריצה?
קבעו מה יקרה עבור ההוראה הבאה (בנפרד, לאחר קטע הקוד הנתון): Beagle d5 = (Mammal)new Dog(); — תקין? שגיאת קומפילציה? שגיאת זמן ריצה?
קבעו מה יקרה עבור ההוראה הבאה (בנפרד, לאחר קטע הקוד הנתון): Object d6 = (Bengal)new Cat(); — תקין? שגיאת קומפילציה? שגיאת זמן ריצה?
קבעו מה יקרה עבור ההוראה הבאה (בנפרד, לאחר קטע הקוד הנתון): ((Bulldog)((Mammal)bul)).method(); — תקין? שגיאת קומפילציה? שגיאת זמן ריצה?
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.