5 תשובות
מה השאלה?
אנונימית
שואל השאלה:
אני לא מצליח את סעיף א', יש שם משהו לא מובן לי.
בפעולה main, מה אומרת השורה השנייה?
אני לא מצליח את סעיף א', יש שם משהו לא מובן לי.
בפעולה main, מה אומרת השורה השנייה?
קישורים מצורפים:
אנונימי
אם הבנתי את הכוונה שלך אתה מדבר על השורה t a2 = new g("cat"). אתה יוצר מופע חדש של המחלקה g, אבל אתה מצהיר עליו כ-t. זה אפשרי כי g יורשת מ-t. הקומפיילר יכיר את a2 כאובייקט מטיפוס t אבל אם תפעיל מתודות שנדרסו ב-g יופעל המימוש הקיים ב-g
שואל השאלה:
תודה רבה, אז למשל מה יהיה הפלט, תוכל להגיד לי ולהסביר למה?
תודה רבה, אז למשל מה יהיה הפלט, תוכל להגיד לי ולהסביר למה?
אנונימי
הדפסה ראשונה: t: dog כי a1 אובייקט מסוג t
הדפסה שנייה: g: cat. אמנם a2 הוא אובייקט מסוג t, אבל בתכלס הוא אובייקט מסוג g כי נקרא הבנאי של g, לכן תיקרא ההדפסה של g ולא של t(אני חושב שכדאי לבדוק את זה כי המתודה של ההדפסה אינה אבסטרקטית, מלא זמן לא יצא לי לעבוד עם java.
הדפסה שלישית: g: me כי מדובר באובייקט מסוג g
הדפסה רביעית: t: me כי בוצע קאסטינג מ-g ל-t
הדפסה חמישית: כמו הקודמת כי נקראה מתודת getfather שמחזירה אובייקט מסוג t ולכן גם ההדפסה היא של אובייקט מסוג t
הדפסה שנייה: g: cat. אמנם a2 הוא אובייקט מסוג t, אבל בתכלס הוא אובייקט מסוג g כי נקרא הבנאי של g, לכן תיקרא ההדפסה של g ולא של t(אני חושב שכדאי לבדוק את זה כי המתודה של ההדפסה אינה אבסטרקטית, מלא זמן לא יצא לי לעבוד עם java.
הדפסה שלישית: g: me כי מדובר באובייקט מסוג g
הדפסה רביעית: t: me כי בוצע קאסטינג מ-g ל-t
הדפסה חמישית: כמו הקודמת כי נקראה מתודת getfather שמחזירה אובייקט מסוג t ולכן גם ההדפסה היא של אובייקט מסוג t
באותו הנושא: