دوره‌ها / JAVA / متدهای کلاس (Java Class Methods)

متدهای کلاس (Java Class Methods)

15 دقیقه Article

متدهای کلاس: رفتار اشیاء 🏃🏁

اگر ویژگی‌ها "اسم"های یک کلاس هستند، متدها "فعل"های آن هستند. متدها رفتارهایی را تعریف می‌کنند که اشیاء می‌توانند انجام دهند.

۱. تعریف متد در کلاس

متدها هم مانند ویژگی‌ها داخل بدنه کلاس تعریف می‌شوند:

{code_block('public class Robot {\n void sayHello() {\n System.out.println("Beep Boop!");\n }\n}')}

۲. تفاوت Static در مقابل Public 🚦

این بخش بسیار مهم است:

  • Static: متدی که بدون ساختنِ شیء هم قابل استفاده است (متعلق به خودِ کلاس).
  • Public: متدی که فقط از طریق یک شیءِ ساخته شده قابل دسترسی است.
{code_block('public class MyClass {\n static void staticMethod() { ... }\n public void publicMethod() { ... }\n\n public static void main(String[] args) {\n staticMethod(); // فراخوانی مستقیم\n // publicMethod(); // خطا!\n MyClass obj = new MyClass();\n obj.publicMethod(); // فراخوانی با شیء\n }\n}')}
دسترسی به ویژگی‌ها: متدهای غیر استاتیک (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 باشد، نه در جای دیگر).
<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
سوال تمرین

در کلاس Dog، یک متد public به نام bark بسازید که عبارت Woof! را چاپ کند. سپس در main آن را فراخوانی کنید.

پاسخ تمرین
JAVA
class Dog {
  public void bark() {
    System.out.println("Woof!");
  }
}

public class Main {
  public static void main(String[] args) {
    Dog myDog = new Dog();
    myDog.bark();
  }
}

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

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