ویژگیهای کلاس (Java Class Attributes)
ویژگیها (Attributes): وضعیت اشیاء 📊💎
ویژگیها که به آنها Fields یا متغیرهای کلاس هم میگوییم، متغیرهایی هستند که در بدنه کلاس تعریف میشوند و دادههای مربوط به اشیاء را نگه میدارند.
۱. دسترسی به ویژگیها
با استفاده از علامت نقطه (Dot Notation .) میتوانید به ویژگیهای یک شیء دسترسی داشته باشید یا آنها را تغییر دهید:
۲. ویژگیهای ثابت (Final Attributes) 🔒
اگر بخواهیم یک ویژگی پس از ساخته شدن شیء هرگز تغییر نکند، از final استفاده کنید:
۳. مقادیر پیشفرض
برخلاف متغیرهای محلی، ویژگیهای کلاس اگر مقداردهی نشوند، جاوا به آنها مقدار پیشفرض میدهد:
- اعداد (int, double...):
0 - بولی (boolean):
false - رشتهها و اشیاء:
null
مثال چند ویژگی:
{code_block('class Person {\n String fname = "John";\n String lname = "Doe";\n int age = 24;\n}')}byte به جای int برای ویژگی کلاس در پروژههای بزرگ اقتصادیتر است.
بخش تخصصی: مهندسی شیءگرایی و مدیریت حافظه 🏗️💎
در این بخش، به مفاهیمی میپردازیم که برای درک فیزیکیِ اتفاقاتِ پشت صحنه در جاوا ضروری هستند.
۱. کالبدشکافی شیء در حافظه Heap
زمانی که شما با دستور new یک شیء میسازید، جاوا بخشی از حافظه Heap را به آن اختصاص میدهد. هر شیء دارای یک "Header" است که شامل اطلاعات مدیریتی جاوا (مثل اطلاعات Garbage Collection) است و سپس فیلدها و دادههای شیء قرار میگیرند. متغیرِ شما در واقع فقط یک "آدرس" یا رفرنس به این منطقه از حافظه را در خود دارد.
۲. مدیریت چرخه عمر اشیاء (Garbage Collection)
برخلاف زبانهایی مثل ++C، در جاوا شما نیازی به حذف دستی اشیاء ندارید. وقتی هیچ متغیری به یک شیء اشاره نکند (مثلاً ریفرنس آن null شود)، آن شیء "یتیم" میشود. Garbage Collector به صورت خودکار این اشیاء را شناسایی کرده و حافظه آنها را برای استفادههای بعدی آزاد میکند.
۳. کدهای تمیز: جداسازی State و Behavior
یک کلاس خوب، کلاسی است که وضعیت (Attributes) را از رفتار (Methods) به درستی تفکیک کند. متغیرهای کلاس باید فقط دادههایی را نگه دارند که ذاتِ آن موجودیت را تعریف میکنند. افراط در تعریف Attributes باعث سنگین شدن اشیاء و پیچیدگی در تستنویسی میشود.
تمرینهای عملی
برای تثبیت یادگیری این درس تمرینهای زیر را حل کنید
در کلاس Laptop، ویژگی ram مقدار 8 را دارد. در متد main، مقدار ram شیء myLaptop را به 16 تغییر دهید و چاپ کنید.
class Laptop {
int ram = 8;
}
public class Main {
public static void main(String[] args) {
Laptop myLaptop = new Laptop();
myLaptop.ram = 16;
System.out.println(myLaptop.ram);
}
}
آماده رفتن به درس بعدی هستید؟
این درس را به پایان رساندید و میتوانید به درس بعدی بروید.