Satu aturan dasar: tanyakan pada diri sendiri "Apakah masuk akal untuk memanggil metode ini, bahkan jika belum ada objek yang dibangun?" Jika demikian, itu pasti statis.
Jadi di kelas CarAnda mungkin memiliki metode:
double convertMpgToKpl(double mpg)
... yang akan menjadi statis, karena orang mungkin ingin tahu apa konversi 35mpg, bahkan jika tidak ada yang pernah membangun Car. Tetapi metode ini (yang menetapkan efisiensi satu Car):
void setMileage(double mpg)
... tidak bisa statis karena tidak dapat memanggil metode sebelum ada yang Cardibangun.
(Omong-omong, kebalikannya tidak selalu benar: Anda mungkin kadang-kadang memiliki metode yang melibatkan dua Carobjek, dan masih ingin itu menjadi statis. Misalnya:
Car theMoreEfficientOf( Car c1, Car c2 )
Meskipun ini dapat dikonversi ke versi non-statis, beberapa orang akan berpendapat bahwa karena tidak ada pilihan "istimewa" yang Carlebih penting, Anda tidak boleh memaksa penelepon untuk memilih satu Carsebagai objek yang Anda akan memanggil metode aktif. Namun, situasi ini menyumbang sebagian kecil dari semua metode statis.)