متدهای نمونه و static
تفاوت متدهای نمونه (instance) و static در جاوا و کاربرد هرکدام.
دو نوع متد در جاوا
۱. متد static — متعلق به کلاس
بدون ساخت شیء قابل فراخوانی است:
public class MathUtils {
static int square(int x) {
return x * x;
}
static int cube(int x) {
return x * x * x;
}
}
// فراخوانی مستقیم با نام کلاس
int result = MathUtils.square(5); ← 25
۲. متد نمونه — متعلق به شیء
باید اول شیء ساخت:
public class Counter {
int count = 0; ← هر شیء count خودش را دارد
void increment() { ← متد نمونه
count++;
}
int getValue() {
return count;
}
}
// استفاده
Counter c1 = new Counter();
c1.increment();
c1.increment();
System.out.println(c1.getValue()); ← 2
Counter c2 = new Counter();
System.out.println(c2.getValue()); ← 0 (مستقل!)
مقایسه
| ویژگی | static | نمونه |
|---|---|---|
| مالکیت | کلاس | هر شیء |
| فراخوانی | ClassName.method() | obj.method() |
| دسترسی به فیلدهای نمونه | ✗ ندارد | ✓ دارد |
| حالت (state) | یک نسخه مشترک | هر شیء مستقل |
| کاربرد | توابع کمکی (مثل Math) | رفتار اشیاء |
مثال معروف: Math
کلاس Math جاوا همه متدهایش static است:
Math.sqrt(16) ← 4.0
Math.pow(2, 10) ← 1024.0
Math.abs(-7) ← 7
Math.max(10, 20) ← 20
متد main چرا static است؟
JVM باید بتواند بدون ساخت شیء، نقطه شروع را صدا بزند — پس main حتماً static است!
این مبحث بخشی از دوره آموزش کامل جاوا است.