मान लीजिए मैं एक मौजूदा, यथोचित बड़ी प्रणाली पर काम कर रहा हूं। मेरे पास एक ऑब्जेक्ट है, myObjectक्लास का MyClass(उदाहरण के लिए, मान लीजिए मैं जावा में काम कर रहा हूं)। myObjectएक रचना है Collection, जिसमें कहा गया है, एक Listऔर अन्य वस्तुएं जो (मुझे लगता है) अप्रासंगिक हैं। इसमें प्रतिनिधि विधियाँ शामिल हैं, जो सिर्फ इसके तरीकों पर कॉल करने के लिए सेवा प्रदान करती Listहैं, ताकि Listयह सुनिश्चित हो सके कि इसे उजागर नहीं किया गया है (क्षमा करें यदि मुझे मेरी शब्दावली गलत लगी है)।
मान लें कि यह Listएक है List<String>, लेकिन किसी कारण से, मुख्य उपयोग विधि कक्षा के लिए एक मुखौटा विधि है SomeOtherClass। यदि मैं अपने में एक नया मूल्य जोड़ी बनाना चाहता था List, तो मेरे पास SomeOtherClassकॉल की गई वस्तु होगी someObject। मैं फोन करूंगा myObject.insert(someObject)और insertविधि के अंदर कुछ जादू होगा जो कि एक Stringमें डालने के लिए पुनः प्राप्त होगा List<String>।
अब मान लें कि मुझे केवल एक Stringमूल्य मिला है , और कोई SomeOtherClassऑब्जेक्ट डालने के लिए नहीं । यह मानते हुए कि मैं इस insertपद्धति को संशोधित नहीं कर सकता क्योंकि यह इस प्रणाली में सब कुछ तोड़ देगा। तो फिर क्या मुझे इस insertविधि को ओवरलोड करना चाहिए ? या मुझे SomeOtherClassहर बार जब मैं कॉल करना चाहता हूं तो मुझे एक नई वस्तु बनानी चाहिए insert?
मुझे लगता है कि अगर मैंने इसे ओवरलोड किया, तो यह कुछ इस तरह दिखेगा ...
public void insert(String s) {
...
}
public void insert(SomeOtherObject obj) {
this.insert(obj.magicStringMethod());
}
(यह उदाहरण कल से मेरे सामने आए ओवरलोडिंग के बारे में एक समान (थोड़ी अधिक जटिल) स्थिति पर आधारित एक काल्पनिक पहेली है। अगर ऐसा कुछ स्पष्ट नहीं हुआ तो मैं इसका विस्तार करूंगा)
क्या यह एक विधि को अधिभारित करने के लिए एक उपयुक्त स्थान होगा? यदि नहीं, तो मुझे एक विधि को कब लोड करना चाहिए?
magicStringMethod()मेरे उदाहरण में, मेरे मामले में, एक Stringप्रतिनिधित्व प्राप्त होगा SomeOtherObjectजो एक डोमेन ऑब्जेक्ट था।