متدهای نمونه و 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 است!

این مبحث بخشی از دوره آموزش کامل جاوا است.

ابزارهای مرتبط