الگوریتم اول

لطفا صبر کنید...

توابع و متدها در جاوا

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

۱. تعریف متد

یک متد در جاوا شامل چهار بخش اصلی است: نوع بازگشتی، نام متد، پارامترها (اختیاری) و بدنه متد. در اینجا ساختار کلی یک متد را مشاهده می‌کنید:

ساختار کلی:

returnType methodName(parameter1, parameter2, ...) {
    // بدنه متد
    // کدهایی که باید اجرا شوند
    return returnValue;  // اگر نوع بازگشتی void نباشد
}
  • returnType: نوع داده‌ای که متد باز می‌گرداند (مثل int، String، void برای نداشتن بازگشتی).
  • methodName: نام متد که باید با استانداردهای نامگذاری در جاوا هماهنگ باشد.
  • parameter1, parameter2,...: پارامترهایی که متد دریافت می‌کند. این پارامترها اختیاری هستند.
  • return: مقدار برگشتی از متد (اگر نوع بازگشتی void نباشد).

۲. انواع متدها

متدهایی با نوع بازگشتی void

اگر متد نیاز به بازگرداندن مقداری نداشته باشد، از نوع void استفاده می‌شود. این متدها تنها کارهایی انجام می‌دهند و هیچ مقدار بازگشتی ندارند.

مثال:

public class MethodExample {
    // متدی که هیچ مقداری بازنمی‌گرداند (void)
    public static void printMessage() {
        System.out.println("سلام، این یک متد بدون بازگشت است!");
    }

    public static void main(String[] args) {
        printMessage();  // فراخوانی متد
    }
}

متدهایی با نوع بازگشتی دیگر

اگر متد نیاز به بازگرداندن مقداری از نوع خاصی (مثل عدد صحیح، رشته و ...) داشته باشد، باید نوع آن را مشخص کنید.

مثال:

public class MethodWithReturnValue {
    // متدی که مقدار صحیح باز می‌گرداند
    public static int addNumbers(int a, int b) {
        return a + b;
    }

    public static void main(String[] args) {
        int result = addNumbers(5, 3);  // فراخوانی متد
        System.out.println("نتیجه جمع: " + result);
    }
}

در اینجا، متد addNumbers دو عدد را دریافت کرده و نتیجه جمع آنها را باز می‌گرداند.

۳. پارامترها در متدها

متدها می‌توانند پارامترهایی را دریافت کنند که داده‌ها را به آنها ارسال می‌کند تا از آنها در بدنه متد استفاده کنند. پارامترها به صورت لیستی از مقادیر به متد منتقل می‌شوند.

مثال:

public class MethodWithParameters {
    // متدی با پارامترها
    public static void greetUser(String name) {
        System.out.println("سلام، " + name);
    }

    public static void main(String[] args) {
        greetUser("علی");  // ارسال پارامتر به متد
    }
}

در این مثال، پارامتر name به متد greetUser ارسال می‌شود و متد پیام خوشامدگویی را چاپ می‌کند.

۴. متدهای بازگشتی و استفاده از return

اگر متدی نیاز به بازگرداندن مقدار داشته باشد، باید از دستور return استفاده کرد. مقدار بازگشتی باید از نوع مشخص‌شده در ابتدای متد باشد.

مثال:

public class MethodReturnExample {
    // متدی که یک رشته را باز می‌گرداند
    public static String greet(String name) {
        return "سلام، " + name + "!";
    }

    public static void main(String[] args) {
        String message = greet("مریم");  // دریافت مقدار بازگشتی از متد
        System.out.println(message);
    }
}

در این مثال، متد greet یک پیام خوشامدگویی به عنوان یک رشته باز می‌گرداند.

۵. متدهای پیشرفته: متدهای استاتیک و غیر استاتیک

  • متدهای استاتیک: این متدها به متغیرها و متدهای استاتیک دسترسی دارند و بدون نیاز به ایجاد شیء از کلاس می‌توانند فراخوانی شوند.
  • متدهای غیر استاتیک: برای استفاده از این متدها نیاز به ایجاد یک شیء از کلاس دارید.

مثال از متد استاتیک:

public class StaticMethodExample {
    // متد استاتیک
    public static void printMessage() {
        System.out.println("این یک متد استاتیک است!");
    }

    public static void main(String[] args) {
        printMessage();  // فراخوانی متد استاتیک بدون نیاز به شیء
    }
}

مثال از متد غیر استاتیک:

public class NonStaticMethodExample {
    // متد غیر استاتیک
    public void displayMessage() {
        System.out.println("این یک متد غیر استاتیک است!");
    }

    public static void main(String[] args) {
        NonStaticMethodExample obj = new NonStaticMethodExample();
        obj.displayMessage();  // فراخوانی متد غیر استاتیک از طریق شیء
    }
}

۶. متدهای بازنویسی شده (Overriding)

در جاوا، می‌توان متدهای کلاس والد را در کلاس فرزند بازنویسی کرد. این ویژگی به شما این امکان را می‌دهد که رفتار متدها را در کلاس‌های فرزند تغییر دهید.

مثال از متد Overriding:

class Animal {
    public void sound() {
        System.out.println("صدای حیوان");
    }
}

class Dog extends Animal {
    @Override
    public void sound() {
        System.out.println("وای، وای!");
    }
}

public class MethodOverridingExample {
    public static void main(String[] args) {
        Animal myDog = new Dog();
        myDog.sound();  // متد sound از کلاس Dog فراخوانی می‌شود
    }
}

در اینجا، متد sound در کلاس Dog بازنویسی شده است تا صدای سگ را چاپ کند.

جمع‌بندی

  • متدها بلوک‌هایی از کد هستند که می‌توانند برای انجام یک کار خاص فراخوانی شوند.
  • متدها می‌توانند با یا بدون پارامتر و با یا بدون بازگشت مقدار باشند.
  • متدهای استاتیک بدون نیاز به شیء از کلاس فراخوانی می‌شوند.
  • متدهای غیر استاتیک نیاز به ایجاد شیء دارند.
  • متدهای بازنویسی شده (Overriding) به شما این امکان را می‌دهند که رفتار یک متد در کلاس‌های فرزند را تغییر دهید.