एक नियम का अंगूठा: अपने आप से पूछें "क्या इस पद्धति को कॉल करने का कोई मतलब है, भले ही अभी तक कोई वस्तु का निर्माण नहीं किया गया हो?" यदि हां, तो यह निश्चित रूप से स्थिर होना चाहिए।
तो कक्षा में Car
आपके पास एक विधि हो सकती है:
double convertMpgToKpl(double mpg)
... जो स्थिर होगा, क्योंकि कोई यह जानना चाहेगा कि 35mpg क्या करता है, भले ही किसी ने कभी निर्माण न किया हो Car
। लेकिन यह विधि (जो किसी विशेष की दक्षता निर्धारित करती है Car
):
void setMileage(double mpg)
... स्थैतिक नहीं हो सकता क्योंकि किसी भी Car
निर्माण से पहले विधि को कॉल करना अकल्पनीय है ।
(वैसे, कांसेप्ट हमेशा सही नहीं होता है: आपके पास कभी-कभी एक ऐसी विधि हो सकती है जिसमें दो Car
ऑब्जेक्ट शामिल होते हैं, और फिर भी चाहते हैं कि इसे हटा दिया जाए।
Car theMoreEfficientOf( Car c1, Car c2 )
हालाँकि इसे एक गैर-स्थैतिक संस्करण में परिवर्तित किया जा सकता है, कुछ का तर्क होगा कि चूंकि "विशेषाधिकार प्राप्त" विकल्प नहीं है, जिनमें Car
से अधिक महत्वपूर्ण है, तो आपको कॉल करने वाले को Car
उस वस्तु को चुनने के लिए मजबूर नहीं करना चाहिए जिस वस्तु को आप आमंत्रित करेंगे; पर विधि। यह स्थिति सभी स्थिर तरीकों के एक छोटे से अंश के लिए है, हालांकि।)