मान लीजिए मैं एक मौजूदा, यथोचित बड़ी प्रणाली पर काम कर रहा हूं। मेरे पास एक ऑब्जेक्ट है, 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
जो एक डोमेन ऑब्जेक्ट था।