دوره‌ها / JAVA / ویژگی‌های کلاس (Java Class Attributes)

ویژگی‌های کلاس (Java Class Attributes)

15 دقیقه Article

ویژگی‌ها (Attributes): وضعیت اشیاء 📊💎

ویژگی‌ها که به آن‌ها Fields یا متغیرهای کلاس هم می‌گوییم، متغیرهایی هستند که در بدنه کلاس تعریف می‌شوند و داده‌های مربوط به اشیاء را نگه می‌دارند.

۱. دسترسی به ویژگی‌ها

با استفاده از علامت نقطه (Dot Notation .) می‌توانید به ویژگی‌های یک شیء دسترسی داشته باشید یا آن‌ها را تغییر دهید:

{code_block('Car myCar = new Car();\nmyCar.color = "Red";\nSystem.out.println(myCar.color);')}

۲. ویژگی‌های ثابت (Final Attributes) 🔒

اگر بخواهیم یک ویژگی پس از ساخته شدن شیء هرگز تغییر نکند، از final استفاده کنید:

{code_block('class User {\n final int id = 101;\n}\n\n// user.id = 102; // این خط خطا می‌دهد!')}

۳. مقادیر پیش‌فرض

برخلاف متغیرهای محلی، ویژگی‌های کلاس اگر مقداردهی نشوند، جاوا به آن‌ها مقدار پیش‌فرض می‌دهد:

  • اعداد (int, double...): 0
  • بولی (boolean): false
  • رشته‌ها و اشیاء: null

مثال چند ویژگی:

{code_block('class Person {\n String fname = "John";\n String lname = "Doe";\n int age = 24;\n}')}
نکته امنیتی: در دنیای واقعی، معمولاً ویژگی‌ها را به صورت مستقیم تغییر نمی‌دهیم (برای امنیت بیشتر) که در مبحث Encapsulation یاد خواهیم گرفت. فعلاً برای یادگیری، دسترسی مستقیم را بررسی می‌کنیم.
بهینه‌سازی حافظه: سعی کنید از انواع داده مناسب استفاده کنید. مثلاً اگر سن هرگز به ۲۰۰ نمی‌رسد، استفاده از byte به جای int برای ویژگی کلاس در پروژه‌های بزرگ اقتصادی‌تر است.
<hr style="margin: 50px 0; border: 0; border-top: 1px dashed rgba(255,255,255,0.1);">

بخش تخصصی: مهندسی شیءگرایی و مدیریت حافظه 🏗️💎

در این بخش، به مفاهیمی می‌پردازیم که برای درک فیزیکیِ اتفاقاتِ پشت صحنه در جاوا ضروری هستند.

۱. کالبدشکافی شیء در حافظه Heap

زمانی که شما با دستور new یک شیء می‌سازید، جاوا بخشی از حافظه Heap را به آن اختصاص می‌دهد. هر شیء دارای یک "Header" است که شامل اطلاعات مدیریتی جاوا (مثل اطلاعات Garbage Collection) است و سپس فیلدها و داده‌های شیء قرار می‌گیرند. متغیرِ شما در واقع فقط یک "آدرس" یا رفرنس به این منطقه از حافظه را در خود دارد.

۲. مدیریت چرخه عمر اشیاء (Garbage Collection)

برخلاف زبان‌هایی مثل ++C، در جاوا شما نیازی به حذف دستی اشیاء ندارید. وقتی هیچ متغیری به یک شیء اشاره نکند (مثلاً ریفرنس آن null شود)، آن شیء "یتیم" می‌شود. Garbage Collector به صورت خودکار این اشیاء را شناسایی کرده و حافظه آن‌ها را برای استفاده‌های بعدی آزاد می‌کند.

۳. کدهای تمیز: جداسازی State و Behavior

یک کلاس خوب، کلاسی است که وضعیت (Attributes) را از رفتار (Methods) به درستی تفکیک کند. متغیرهای کلاس باید فقط داده‌هایی را نگه دارند که ذاتِ آن موجودیت را تعریف می‌کنند. افراط در تعریف Attributes باعث سنگین شدن اشیاء و پیچیدگی در تست‌نویسی می‌شود.

نکته پایانی: شیءگرایی فقط یک روش کدنویسی نیست؛ بلکه روشی برای "مدل‌سازی جهان واقعی" در دنیای دیجیتال است. هر چقدر مدل‌سازی شما دقیق‌تر باشد، نرم‌افزار شما پایدارتر خواهد بود.

تمرین‌های عملی

برای تثبیت یادگیری این درس تمرین‌های زیر را حل کنید

تغییر ویژگی شیء Easy
سوال تمرین

در کلاس Laptop، ویژگی ram مقدار 8 را دارد. در متد main، مقدار ram شیء myLaptop را به 16 تغییر دهید و چاپ کنید.

پاسخ تمرین
JAVA
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);
  }
}

آماده رفتن به درس بعدی هستید؟

این درس را به پایان رساندید و می‌توانید به درس بعدی بروید.