دامنه متغیرهای جاوا – به زبان ساده
هر متغیر در زبان برنامهنویسی جاوا یک دامنه دارد. منظور از دامنه بخشی از برنامه است که در آن میتوان از متغیر استفاده کرد و متغیر در آن حوزه معتبر خواهد بود. در این مقاله به معرفی دامنه متغیرهای جاوا پرداخته و تفاوت بین آنها را مورد بررسی قرار میدهیم.
دامنه کلاس
هر متغیر که درون یک براکت کلاس {} و با مادیفایر دسترسی «خصوصی» (private) اعلان شود و خارج از همه متدها باشد، دارای دامنه کلاس است. در نتیجه این متغیرها میتوانند در همه بخشهای کلاس مورد استفاده قرار گیرند، اما امکان استفاده از آنها در خارج از کلاس وجود ندارد:
چنان که میبینیم ClassScopeExample دارای متغیر کلاس amount است که از درون کلاس و متدهای آن قابل دسترسی است.
دامنه متد
زمانی که یک متغیر درون یک متد تعریف شود، دارای دامنه متد است و تنها درون همان متد معتبر خواهد بود:
در کد فوق در methodA یک متغیر متد به نام area ایجاد کردیم. به همین جهت، میتوانیم از area درون method استفاده کنیم، اما امکان استفاده از این متغیر در هر جایی خارج از این متد وجود ندارد.
دامنه حلقه
اگر متغیری را درون یک حلقه اعلان کنیم، دارای دامنه حلقه بوده و تنها درون همان حلقه در دسترس ما خواهد بود:
چنان که میبینیم در کد فوق متد iterationOfNames دارای یک متغیر متد به نام name است. این متغیر تنها میتواند درون حلقه مورد استفاده قرار گیرد و خارج از آن معتبر نیست.
دامنه براکت
دامنههای دیگر را میتوانیم هر جایی با استفاده از براکت {} تعریف کنیم:
متغیر number تنها درون براکتها معتبر است.
دامنهها و ابهام متغیر
تصور کنید یک متغیر کلاس داریم و میخواهیم یک متغیر متد با همان نام اعلان کنیم:
نخستین باری که title را پرینت بگیریم عبارت Faradars نمایش مییابد. پس از آن یک متغیر متد با همان نام اعلان شده و مقدار John Doe به آن انتساب یافته است. متغیر متد title امکان دسترسی به متغیر کلاس title را باطل میسازد. به همین دلیل بار دوم که title را پرینت بگیریم، با عبارت John Doe مواجه میشویم. این وضعیت سردرگمکننده به نام «ابهام متغیر» (variable shadowing) نامیده میشود و رویه مناسبی به حساب نمیآید. در این حالت بهتر است از یک پیشوند برای دسترسی به متغیر مانند this.title استفاده کنیم.
سخن پایانی
در این مقاله با دامنههای مختلف جاوا آشنا شدیم. سورس کد این مقاله را میتوانید در این ریپوی گیتهاب (+) ملاحظه کنید.
اگر این مطلب برای شما مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای Java (جاوا)
- مجموعه آموزشهای برنامه نویسی
- گنجینه آموزشهای جاوا (Java)
- ۱۰ مفهوم اصلی زبان جاوا که هر فرد مبتدی باید بداند
- آموزش مقدماتی جاوا (بخش اول) — از صفر تا صد
==