متغیر نمونه در مقابل متغیر محلی
متغیر نمونه نوعی متغیر است که در برنامه نویسی شی گرا وجود دارد. متغیری است که در یک کلاس تعریف شده است و هر شیء از آن کلاس یک کپی جداگانه از آن متغیر را نگه می دارد. از سوی دیگر، استفاده از متغیرهای محلی به زبان های برنامه نویسی شی گرا محدود نمی شود. این متغیری است که فقط در یک بلوک خاص از کد (به عنوان مثال تابع، بلوک حلقه و غیره) که در آن تعریف شده است، قابل ارزیابی است. به همین دلیل، گفته می شود که متغیرهای محلی دارای دامنه محلی هستند.
متغیر نمونه چیست؟
متغیرهای نمونه در برنامه نویسی شی گرا برای ذخیره وضعیت هر شی در یک کلاس استفاده می شود. آنها همچنین به عنوان متغیرهای عضو یا متغیرهای فیلد شناخته می شوند. متغیرهای نمونه بدون استفاده از کلمه کلیدی ثابت در جاوا اعلان می شوند. مقادیر ذخیره شده در متغیرهای نمونه برای هر شی منحصر به فرد است (هر شی یک کپی جداگانه دارد) و مقادیر ذخیره شده در آنها نشان دهنده وضعیت آن شی است. فضا برای یک متغیر نمونه در پشته تخصیص داده می شود، زمانی که آن شی در پشته تخصیص داده شود. بنابراین، متغیرهای نمونه تا زمانی که شی زنده است در حافظه نگهداری می شوند. به عنوان مثال، رنگ یک ماشین مستقل از رنگ ماشین دیگر است. بنابراین رنگ یک شیء ماشین را می توان در یک متغیر نمونه ذخیره کرد. در عمل، متغیرهای نمونه در داخل کلاسها و روشهای بیرونی اعلام میشوند. معمولاً متغیرهای نمونه بهعنوان خصوصی اعلام میشوند تا فقط در کلاسی که اعلام شده است به آنها دسترسی داشته باشیم.
متغیر محلی چیست؟
متغیرهای محلی متغیرهایی هستند که محدوده محلی دارند و در یک بلوک کد خاص اعلام می شوند. متغیرهای محلی را می توان به عنوان متغیرهایی دید که توسط یک روش برای ذخیره حالت موقت آن استفاده می شود. محدوده یک متغیر محلی با استفاده از مکانی که متغیر اعلام شده تعیین می شود و از کلمات کلیدی خاصی برای این منظور استفاده نمی شود. به طور معمول، دسترسی به یک متغیر محلی در بلوک کدی که اعلام شده است (یعنی بین پرانتزهای باز و بسته شدن آن بلوک کد) محدود است. متغیرهای محلی معمولاً در پشته تماس ذخیره می شوند. این به فراخوانیهای تابع بازگشتی اجازه میدهد تا نسخههای خود را از متغیرهای محلی ذخیره کنند تا در فضاهای آدرس حافظه جداگانه ذخیره شوند. هنگامی که متد اجرای خود را به پایان می رساند، اطلاعات مربوط به آن متد از پشته فراخوانی بیرون می آید و همچنین متغیرهای محلی ذخیره شده را از بین می برد.
تفاوت بین Instance Variable و Local Variable چیست؟
متغیرهای نمونه در کلاسهای خارج از متدها اعلان میشوند و وضعیت یک شی را ذخیره میکنند، در حالی که متغیرهای محلی درون بلوکهای کد اعلان میشوند و برای ذخیره وضعیت یک متد استفاده میشوند.یک متغیر نمونه تا زمانی زنده است که شی حاوی آن متغیر زنده است، در حالی که یک متغیر محلی در طول اجرای آن متد/ بلوک کد فعال است. یک متغیر نمونه (که عمومی اعلام می شود) در داخل کلاس قابل دسترسی است، در حالی که یک متغیر محلی فقط در بلوک کدی که اعلام شده است قابل دسترسی است. استفاده از متغیرهای نمونه فقط محدود به برنامه نویسی شی گرا است، در حالی که متغیرهای محلی چنین محدودیتی ندارند.