यदि मैं जावा में किसी वर्ग का उदाहरण बनाता हूं, तो यह .method() का उपयोग करने के बजाय, उसी वर्ग की स्थैतिक विधि को कॉल करना बेहतर क्यों है?विधि की कक्षा के उदाहरण के भीतर स्थैतिक रूप से स्थैतिक विधि को कॉल करना बेहतर क्यों है?
मुझे ग्रहण से चेतावनी मिलती है जब मैं इस विधि के माध्यम से कस्टम क्लास के कन्स्ट्रक्टर के भीतर स्थिर विधि staticMethod() को कॉल करने का प्रयास करता हूं।
public MyClass() { this.staticMethod(); }
बनाम
public MyClass() { MyClass.staticMethod(); }
किसी को भी व्याख्या कर सकते हैं क्यों यह एक बुरी बात करने के लिए है? ऐसा लगता है जैसे संकलक पहले से ही ऑब्जेक्ट का एक आवंट आवंटित कर लेना चाहिए था, इसलिए स्थाई रूप से स्मृति आवंटित करना अनदेखा ओवरहेड होगा।
संपादित करें:
मैं क्या कर रहा हूँ सुनवाई का सार है कि यह मुख्य रूप से पठनीयता की वजह से बुरा व्यवहार है, और जाहिर है तो है। मैं वास्तव में पूछने की कोशिश कर रहा था (यद्यपि बहुत स्पष्ट रूप से नहीं) यह था कि MyClass.staticMethod() या this.staticMethod() को कॉल करने के बीच 'संकलन', यदि कोई हो, तो क्या अंतर है।
आप स्थिर तरीकों को ओवरराइड नहीं है (यह कभी एक अच्छा विचार "ओवरराइड" करने के लिए स्थिर तरीकों शायद एक और दिन के लिए एक चर्चा है ... चाहे), तो आप उन्हें छिपाने। ओवरराइडिंग पॉलीमोर्फिज्म का तात्पर्य है, जिसे आप स्थिर तरीकों से नहीं प्राप्त करते हैं। – TofuBeer
@ टोफूबीर धन्यवाद, मैं अपनी शब्दावली में पर्याप्त सटीक नहीं था। किसी स्थिर विधि पर 'इस' का उपयोग करने वाले किसी के परिप्रेक्ष्य से, यह पॉलिमॉर्फिज्म के लिए कुछ प्रकार का इरादा बता सकता है, जो काम नहीं करेगा। – Ash