توابع و متدها در جاوا
در جاوا، توابع به نام متد شناخته میشوند. متدها بلوکهایی از کد هستند که میتوانند برای انجام یک کار خاص فراخوانی شوند. متدها میتوانند ورودیهایی را دریافت کنند و مقداری را به عنوان خروجی بازگردانند. آنها به شما این امکان را میدهند که کد خود را سازماندهی کرده و از تکرار آن جلوگیری کنید.
۱. تعریف متد
یک متد در جاوا شامل چهار بخش اصلی است: نوع بازگشتی، نام متد، پارامترها (اختیاری) و بدنه متد. در اینجا ساختار کلی یک متد را مشاهده میکنید:
ساختار کلی:
// بدنه متد
// کدهایی که باید اجرا شوند
return returnValue; // اگر نوع بازگشتی void نباشد
}
- returnType: نوع دادهای که متد باز میگرداند (مثل int، String، void برای نداشتن بازگشتی).
- methodName: نام متد که باید با استانداردهای نامگذاری در جاوا هماهنگ باشد.
- parameter1, parameter2,...: پارامترهایی که متد دریافت میکند. این پارامترها اختیاری هستند.
- return: مقدار برگشتی از متد (اگر نوع بازگشتی void نباشد).
۲. انواع متدها
متدهایی با نوع بازگشتی void
اگر متد نیاز به بازگرداندن مقداری نداشته باشد، از نوع void استفاده میشود. این متدها تنها کارهایی انجام میدهند و هیچ مقدار بازگشتی ندارند.
مثال:
// متدی که هیچ مقداری بازنمیگرداند (void)
public static void printMessage() {
System.out.println("سلام، این یک متد بدون بازگشت است!");
}
public static void main(String[] args) {
printMessage(); // فراخوانی متد
}
}
متدهایی با نوع بازگشتی دیگر
اگر متد نیاز به بازگرداندن مقداری از نوع خاصی (مثل عدد صحیح، رشته و ...) داشته باشد، باید نوع آن را مشخص کنید.
مثال:
// متدی که مقدار صحیح باز میگرداند
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 static void greetUser(String name) {
System.out.println("سلام، " + name);
}
public static void main(String[] args) {
greetUser("علی"); // ارسال پارامتر به متد
}
}
در این مثال، پارامتر name به متد greetUser ارسال میشود و متد پیام خوشامدگویی را چاپ میکند.
۴. متدهای بازگشتی و استفاده از return
اگر متدی نیاز به بازگرداندن مقدار داشته باشد، باید از دستور return استفاده کرد. مقدار بازگشتی باید از نوع مشخصشده در ابتدای متد باشد.
مثال:
// متدی که یک رشته را باز میگرداند
public static String greet(String name) {
return "سلام، " + name + "!";
}
public static void main(String[] args) {
String message = greet("مریم"); // دریافت مقدار بازگشتی از متد
System.out.println(message);
}
}
در این مثال، متد greet یک پیام خوشامدگویی به عنوان یک رشته باز میگرداند.
۵. متدهای پیشرفته: متدهای استاتیک و غیر استاتیک
- متدهای استاتیک: این متدها به متغیرها و متدهای استاتیک دسترسی دارند و بدون نیاز به ایجاد شیء از کلاس میتوانند فراخوانی شوند.
- متدهای غیر استاتیک: برای استفاده از این متدها نیاز به ایجاد یک شیء از کلاس دارید.
مثال از متد استاتیک:
// متد استاتیک
public static void printMessage() {
System.out.println("این یک متد استاتیک است!");
}
public static void main(String[] args) {
printMessage(); // فراخوانی متد استاتیک بدون نیاز به شیء
}
}
مثال از متد غیر استاتیک:
// متد غیر استاتیک
public void displayMessage() {
System.out.println("این یک متد غیر استاتیک است!");
}
public static void main(String[] args) {
NonStaticMethodExample obj = new NonStaticMethodExample();
obj.displayMessage(); // فراخوانی متد غیر استاتیک از طریق شیء
}
}
۶. متدهای بازنویسی شده (Overriding)
در جاوا، میتوان متدهای کلاس والد را در کلاس فرزند بازنویسی کرد. این ویژگی به شما این امکان را میدهد که رفتار متدها را در کلاسهای فرزند تغییر دهید.
مثال از متد Overriding:
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) به شما این امکان را میدهند که رفتار یک متد در کلاسهای فرزند را تغییر دهید.
