متدهای کلاس (Java Class Methods)
متدهای کلاس: رفتار اشیاء 🏃🏁
اگر ویژگیها "اسم"های یک کلاس هستند، متدها "فعل"های آن هستند. متدها رفتارهایی را تعریف میکنند که اشیاء میتوانند انجام دهند.
۱. تعریف متد در کلاس
متدها هم مانند ویژگیها داخل بدنه کلاس تعریف میشوند:
{code_block('public class Robot {\n void sayHello() {\n System.out.println("Beep Boop!");\n }\n}')}۲. تفاوت Static در مقابل Public 🚦
این بخش بسیار مهم است:
- Static: متدی که بدون ساختنِ شیء هم قابل استفاده است (متعلق به خودِ کلاس).
- Public: متدی که فقط از طریق یک شیءِ ساخته شده قابل دسترسی است.
مثال کاربردی:
{code_block('class Car {\n public void fullThrottle() {\n System.out.println("The car is going as fast as it can!");\n }\n\n public void speed(int maxSpeed) {\n System.out.println("Max speed is: " + maxSpeed);\n }\n}')}startEngine باید داخل کلاس Car باشد، نه در جای دیگر).
بخش تخصصی: مهندسی شیءگرایی و مدیریت حافظه 🏗️💎
در این بخش، به مفاهیمی میپردازیم که برای درک فیزیکیِ اتفاقاتِ پشت صحنه در جاوا ضروری هستند.
۱. کالبدشکافی شیء در حافظه Heap
زمانی که شما با دستور new یک شیء میسازید، جاوا بخشی از حافظه Heap را به آن اختصاص میدهد. هر شیء دارای یک "Header" است که شامل اطلاعات مدیریتی جاوا (مثل اطلاعات Garbage Collection) است و سپس فیلدها و دادههای شیء قرار میگیرند. متغیرِ شما در واقع فقط یک "آدرس" یا رفرنس به این منطقه از حافظه را در خود دارد.
۲. مدیریت چرخه عمر اشیاء (Garbage Collection)
برخلاف زبانهایی مثل ++C، در جاوا شما نیازی به حذف دستی اشیاء ندارید. وقتی هیچ متغیری به یک شیء اشاره نکند (مثلاً ریفرنس آن null شود)، آن شیء "یتیم" میشود. Garbage Collector به صورت خودکار این اشیاء را شناسایی کرده و حافظه آنها را برای استفادههای بعدی آزاد میکند.
۳. کدهای تمیز: جداسازی State و Behavior
یک کلاس خوب، کلاسی است که وضعیت (Attributes) را از رفتار (Methods) به درستی تفکیک کند. متغیرهای کلاس باید فقط دادههایی را نگه دارند که ذاتِ آن موجودیت را تعریف میکنند. افراط در تعریف Attributes باعث سنگین شدن اشیاء و پیچیدگی در تستنویسی میشود.
تمرینهای عملی
برای تثبیت یادگیری این درس تمرینهای زیر را حل کنید
در کلاس Dog، یک متد public به نام bark بسازید که عبارت Woof! را چاپ کند. سپس در main آن را فراخوانی کنید.
class Dog {
public void bark() {
System.out.println("Woof!");
}
}
public class Main {
public static void main(String[] args) {
Dog myDog = new Dog();
myDog.bark();
}
}
آماده رفتن به درس بعدی هستید؟
این درس را به پایان رساندید و میتوانید به درس بعدی بروید.