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 Car
Anda 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 Car
dibangun.
(Omong-omong, kebalikannya tidak selalu benar: Anda mungkin kadang-kadang memiliki metode yang melibatkan dua Car
objek, 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 Car
lebih penting, Anda tidak boleh memaksa penelepon untuk memilih satu Car
sebagai objek yang Anda akan memanggil metode aktif. Namun, situasi ini menyumbang sebagian kecil dari semua metode statis.)