همانطور که در بخش قبلی یاد گرفتید، یک شی وضعیت خود را در فیلدها (Fields) ذخیره میکند. بحث «شی چیست؟» شما را با فیلدها آشنا کرد، اما احتمالاً هنوز چند سؤال دارید: قوانین و قراردادهای نامگذاری فیلد چیست؟ علاوه بر int چه انواع داده دیگری وجود دارد؟ آیا فیلدها هنگام اعلام باید مقداردهی اولیه شوند؟ اگر مقداردهی اولیه نشوند، آیا مقدار پیشفرض دریافت میکنند؟
زبان جاوا انواع متغیر زیر را تعریف میکند:
از نظر فنی، اشیا وضعیت فردی خود را در فیلدهای non-static ذخیره میکنند — فیلدهایی که بدون کلمه کلیدی static اعلام شدهاند. فیلدهای non-static به عنوان متغیرهای instance هم شناخته میشوند چون مقادیرشان برای هر نمونه از کلاس منحصربهفرد است؛ currentSpeed یک دوچرخه مستقل از currentSpeed دوچرخه دیگر است.
متغیر کلاس هر فیلدی است که با modifier static اعلام شده باشد؛ به کامپایلر میگوید فقط یک نسخه از این متغیر وجود دارد، صرفنظر از اینکه کلاس چند بار نمونهسازی شده باشد. فیلدی که تعداد دندههای نوع خاصی از دوچرخه را تعریف میکند میتواند static باشد چون مفهوماً همان تعداد دنده روی تمام نمونهها اعمال میشود. کد static int numGears = 6; چنین فیلد staticای ایجاد میکند. همچنین کلمه کلیدی final میتواند اضافه شود تا نشان دهد تعداد دندهها هرگز تغییر نمیکند.
مشابه نحوه ذخیره وضعیت شی در فیلدها، یک متد اغلب وضعیت موقت خود را در متغیرهای محلی ذخیره میکند. نحوه اعلام متغیر محلی مشابه اعلام فیلد است (مثلاً int count = 0;). هیچ کلمه کلیدی خاصی متغیر را بهعنوان محلی مشخص نمیکند؛ این تعیین کاملاً از مکان اعلام متغیر میآید — بین آکولاد باز و بسته یک متد. متغیرهای محلی فقط در متدهایی که در آنها اعلام شدهاند قابل مشاهده هستند و از بقیه کلاس قابل دسترسی نیستند.
پارامترها را قبلاً در کلاس Bicycle و متد main برنامه «Hello World!» دیدهاید. امروز یاد بگیرید که پارامترها همیشه به عنوان «متغیر» طبقهبندی میشوند، نه «فیلد». این مورد برای سایر ساختارهای پذیرنده پارامتر هم صادق است (مانند Constructorها و handlerهای Exception).
اگرچه، بقیه این آموزش از دستورالعملهای کلی زیر هنگام بحث درباره فیلدها و متغیرها استفاده میکند: اگر درباره «فیلدها بهطور کلی» (بدون متغیرهای محلی و پارامترها) صحبت میکنیم، ممکن است بگوییم «فیلدها». اگر بحث درباره «همه موارد بالا» است، ممکن است بگوییم «متغیرها». اگر زمینه نیاز به تفکیک داشته باشد، از اصطلاحات مشخص (static field، متغیرهای محلی و غیره) استفاده میکنیم. همچنین ممکن است گاهی اصطلاح عضو (member) را ببینید. فیلدها، متدها و انواع تودرتوی یک نوع، مجموعاً اعضای آن نامیده میشوند.
هر زبان برنامهنویسی قوانین و قراردادهای خاص خود را برای اسامی مجاز دارد و زبان جاوا هم از این قاعده مستثنا نیست. قوانین و قراردادهای نامگذاری متغیرها را میتوان به صورت زیر خلاصه کرد:
$ یا زیرخط _ شروع شود. اما قرارداد این است که همیشه نام متغیرها را با حرف شروع کنید، نه $ یا _. علاوه بر این، کاراکتر علامت دلار طبق قرارداد هرگز استفاده نمیشود. کاراکتر زیرخط هم مشابه است؛ اگرچه فنی قانونی است، اما این روش توصیه نمیشود. فضای خالی مجاز نیست.cadence، speed و gear بسیار شهودیتر از نسخههای مخفف مانند s، c و g هستند. همچنین نام انتخابی نباید کلمه کلیدی یا رزرو شده باشد.gearRatio و currentGear نمونههای عالی این قرارداد هستند. اگر متغیر مقدار ثابت ذخیره کند، مانند static final int NUM_GEARS = 6، قرارداد کمی تغییر میکند و تمام حروف بزرگ و کلمات با زیرخط جدا میشوند. طبق قرارداد، کاراکتر زیرخط در جاهای دیگر هرگز استفاده نمیشود.این محتوا کاملا رایگان توسط تیم کدلپر ترجمه شده و در اختیار شما کاربران عزیز قرار گرفته است، هر گونه کپی برداری برای مقاصد غیر رایگان و بدون ذکر منبع، مورد پیگیری قانونی قرار میگیرد.
ترجمه شده از منبع: https://dev.java/learn/