فیلدهای کلاس
ماهیت برنامه نویسی شی گرا نشان دادن برنامه به عنوان تعاملی از اشیاء است.
 
یک شینوعی موجودیت با ویژگی‌های خاص و عملیات معین روی آن است.

اشیاء در اصل برای شبیه سازی واقعیت ایجاد شده اند: بسیاری از چیزهای اطراف ما را می توان به عنوان یک شی نشان داد. برای مثال، کتابی که اخیراً خوانده‌اید را می‌توان به عنوان یک شی با ویژگی‌های «نام»، «نویسنده»، «رده‌بندی سنی»، «متن کتاب»، «تعداد صفحات» و غیره در نظر گرفت. در بالای کتاب شما می تواند عملیاتی مانند "خواندن کتاب"، "سوزاندن کتاب" و غیره را انجام دهد.
در اصطلاح زبان برنامه نویسی جاوا، این "خواص" فیلد و عملیات روی اشیا روش نامیده می شوند.
از آنجایی که جاوا یک زبان تایپ ایستا است، هر شی باید بر اساس الگوی خاصی ایجاد شود. در جاوا، چنین قالب هایی کلاس هستند. کلاس توضیح می دهد که نوع خاصی از شی می تواند چه فیلدهایی داشته باشد و چه عملیاتی بر روی آن تعریف شده است.
تفاوت بین کلاس و شی مشابه تفاوت بین "ماشین" است. و "Toyota Camry، پارک شده در خانه پنجم در خیابان Cheburekovo".

رویه ایجاد کلاس خود از اشیاء با فیلدهای جاوا را در نظر بگیرید. کتاب کلاس { نام رشته نام نویسنده رشته; int ageRequirement; متن رشته int pageCount; } این کد کلاس"کتاب" را ایجاد می کند. اشیاءکلاس «کتاب» دو ویژگی عدد صحیح (به نام‌های «ageRequirement» و «pageCount») و سه ویژگی از نوع «String» (با نام‌های "name"، "authorName"، و "text".
سینتکس کلی برای ایجاد کلاس با فیلدها به شرح زیر است.
  کلاس <نام کلاس> { <نوع ویژگی اول> <نام اصلی> <نوع ویژگی دوم> <نام ملک دوم> &helli; <نوع آخرین ویژگی> <نام آخرین ملک> }

البته، در جاوا، می‌توانید کلاس‌ها را نه تنها از این طریق ایجاد کنید (متدها، اصلاح‌کننده‌های دسترسی و خیلی چیزهای دیگر نیز وجود دارد)، بلکه بعداً در مورد آن بیشتر توضیح خواهیم داد.

روش های کلاس
عملیات روی اشیاء در جاوا روش نامیده می شود. روش‌ها مانند توابع ریاضی هستند: می‌توانند آگومان‌هاو یک مقدار برگردانند. از سوی دیگر، متدها در جاوا نیز به تمام فیلدهای یک شی دسترسی دارند.

برای ایجاد متد در یک کلاس، باید آن را در کلاس قرار دهید. برای مثال، می‌توانیم یک روش print(age) تعریف کنیم که اطلاعات مربوط به کتاب ما را چاپ می‌کند و اگر کاربر هنوز به اندازه کافی برای آن کتاب بزرگ نشده است، هشداری را نمایش می‌دهد.

ایجاد شد
    کلاس کتاب
    {
        نام رشته;
        String authorName;
        int ageRequirement;
        متن رشته ای;
        int pageCount;
        // یک روش چاپ ایجاد کنید
        باطل چاپ(int سن)
        {
            سیستم.خارج.< span style="color:#7d9029">println("Name: " +name);
            سیستم.خارج.< span style="color:#7d9029">println("نویسنده: " +authorName);
            سیستم.خارج.< span style="color:#7d9029">println("تعداد صفحات: "+عدد صحیح.toString(ageRequirement);
            // کد تأیید اینجا می رود
        }
    }
 
بیایید نحو را برای ایجاد یک متد تجزیه و تحلیل کنیم.
1) خط اول یک روش امضای آن است.
2) ابتدا نوع برگشتی متد نوشته می شود. متد ما هیچ مقداری بر نمی گرداند، بنابراین void را می نویسیم.
3) سپس در امضا نام روش (print) درج شده است.
4) در پرانتز فهرستی از آرگومان ها وجود دارد. آرگومان ها با کاما از هم جدا می شوند. برای هر آرگومان، نوع و نام آن مشخص می شود که با فاصله از هم جدا می شوند. در مورد ما، تنها یک آرگومان وجود دارد، آن دارای نوع int و نام age است، بنابراین هیچ کاما وجود ندارد.
5) پس از آن کد روش در بریس های فرفری می آید. برای برگرداندن مقداری از یک متد، return <value>; را بنویسید. در مثال، متد چیزی بر نمی گرداند، بنابراین return را می توان حذف کرد. برای خاتمه پیش از موعد اجرای یک متد، می توانید return; را بنویسید.
6) در خود کلاس می توان با نام به فیلدهای شیء این کلاس اشاره کرد.

دسترسی به اصلاح کننده ها
به طور پیش‌فرض، همه فیلدهاو روش‌ها یک کلاس در جاوا خصوصی هستند. یعنی هیچکس نمی تواند به آنها دسترسی داشته باشد، یعنی خارج از اشیاء این کلاس، هیچ متدی نمی تواند از فیلدها و متدهای اشیاء این کلاس استفاده کند.

فیلدها و روش ها را می توان با تغییرکننده دسترسی public عمومی کرد. همچنین یک اصلاح کننده private وجود دارد که فیلد را خصوصی می کند. این اختیاری است زیرا تمام فیلدها و روش ها به طور پیش فرض خصوصی هستند. در اینجا نمونه ای از استفاده از اصلاح کننده های public  و private آورده شده است. کتاب کلاسی { نام رشته عمومی; نام نویسنده رشته; خصوصی int ageRequirement; متن رشته عمومی int pageCount; int getTextLength() { طول متن بازگشتی(); } عمومی int getAverageLetterCount() { بازگشت getTextLength() / pageCount; } private int getDifficuiltyLevel() { بازگشت 5 * ageRequirement * text.Length(); } }
در این نسخه از کلاس Book ، فیلدهای name و pageCount برای ​​خواندن و اصلاح در اشیاء دیگر عمومی می شوند. متد getAverageLetterCount() نیز برای فراخوانی از اشیاء کلاس‌های دیگر موجود است. تمام فیلدها و متدهای دیگر خصوصی باقی می مانند و فقط در متدهای این کلاس موجود هستند. در متد عمومی getAverageLetterCount() می توانیم متد خصوصی را getTextLength() فراخوانی کنیم زیرا getAverageLetterCount() به خود کلاس تعلق دارد. اما از روشی از کلاس دیگر کار نخواهد کرد.

اما چرا پس زمینه ها را خصوصی کنیم؟ در کد جاوا، بیشتر فقط فیلدهای خصوصی را خواهید دید. واقعیت این است که اگر دسترسی به فیلدهای خصوصی از طریق روش های عمومی شی انجام شود، با هر گونه دسترسی به فیلدهای خصوصی می توان اقدامات و بررسی های اضافی را انجام داد. بیشتر در مورد این در درس در مورد کپسوله سازی خواهد بود.

دروس تا کنون در مورد ایجاد کلاس ها بحث شده است که الگوهایی برای ایجاد اشیا هستند. در همین درس، روند ایجاد و استفاده از خود اشیا توضیح داده خواهد شد.

پیوندها
در زبان جاوا، یک متغیر هرگز نمی تواند یک شی را ذخیره کند. در عوض، جاوا ارجاعی دارد که به مکان یک شی در حافظه اشاره می کند.
نحو برای ایجاد متغیری از نوع مرجع شی به شرح زیر است:
<نام کلاس> <نام متغیر>;
شایان ذکر است که ما بلافاصله کلاسی را که به اشیاء آن ارجاع داده می شود، نشان می دهیم.

مثال: متغیری به نام "b" که به کلاس Book اشاره می کند:

کتاب b;

به همین ترتیب، می توانید فیلدهای کلاس ایجاد کنید (می توانید یک اصلاح کننده دسترسی را در آنجا اضافه کنید). می توانید آرایه هایی از مراجع ایجاد کنید و آنها را از متدها برگردانید. مثال:

ایجاد شد
عمومی کلاس کتابخانه {
  کتاب عمومی[] کتاب;
  عمومی کتاب findBookWithName(String name) {
//code که کتاب مناسب را پیدا می‌کند
  }
};


نتیجه‌گیری: از بسیاری جهات، می‌توانید با مراجع مانند متغیرهای دیگر انواع ابتدایی (int، long، double...) کار کنید.