PDA

View Full Version : سوال: در مورد متدهای مجازی



flamingo
سه شنبه 18 اسفند 1388, 12:38 عصر
سلام
یه سوال ازتون داشتم
متدهای مجازی نتیجه ی dynamic binding است. یا dinamic binding نتیجه ی متدهای مجازی؟؟؟
ممنون

vcldeveloper
چهارشنبه 19 اسفند 1388, 01:39 صبح
Virtual methods از Dynamic Binding برای تشخیص متد فراخوانی شده استفاده می کنند. روش کار به این صورت هست که در زمان کامپایل متدی که باید اجرا بشه، تعیین نمیشه، بلکه لیستی از متدهای Virtual هر کلاس در یک جدول نگهداری میشه. وقتی یک متد Virtual متعلق به یک شی در Runtime فراخوانی میشه، جدول متدهای Virtual کلاس مربوط به اون شی و کلاس های والدش بررسی میشند، تا یک پیاده سازی از اون متد پیدا بشه. وقتی پیاده سازی مربوطه پیدا شد، از روی آدرس آن متد، کنترل اجرا به آن متد واگذار میشه.

پس Virtual Methodها از Dynamic Binding برای فراخوانی متد مورد نظر استفاده می کنند.