ערכתי לאחרונה בתאריך 24.01.10 בשעה 10:39 בברכה, ldan192
כאלה.
למרות שלפי ה-new וה-console מובן שזה #C.
התשובה היא כמעט כמו שאמרת.
ראשית, #C בעלת קישור סטטי.
כשמבצעים new לפונקציה, זה גורם להחבאת הפונקציה החדשה בפני מתודות האב (כמו שמתבצע בעצם ב-++C) ולא ל-overloading (כמו ב-Java) או ל-overriding (כמו שקורה עם פקודת ה-override).
תחשוב שעם new שמאחורי הקלעים printMe של Base מוגדר כ-_1234PrintMe וב-SubClass מוגדר כ-6752PrintMe_. שמות פונקציות שונות. call-ים שונים.
לכן, למרות הקישור הדינמי של printMe, הוא לא מזהה מתודה שדרסה/overloaded אותו ולכן הוא ניגש רק לזו שב-BaseClass.
אם תבצע downcasting הוא ידע לגשת לפונקציית ה-SubClass.
בברכה,
עידן