स्ट्रेची ने शब्द तदर्थ पोलिमोर्फ़िज्म (ad-hoc polymorphism) का चयन उन बहुरूपी फंक्शनों के सन्दर्भ में किया जिन्हें भिन्न प्रकार के तर्कों पर लागू किया जा सकता है, लेकिन जो उस तर्क के आधार पर भिन्न प्रकार से (differently) व्यवहार करते हैं, जिनके लिए उन्हें लागू किया जाता है (इन्हें फंक्शन ओवरलोडिंग भी कहा जाता है). 
शब्द "तदर्थ (ad hoc)" इस अर्थ में अपमानजनक (pejorative) नहीं माना जा सकता है; यह साधारण रूप से इस तथ्य से सम्बंधित है कि पोलिमोर्फ़िज्मका प्रकार, प्रकार प्रणाली का एक मूल गुण नहीं है। 

तदर्थ पोलिमोर्फ़िज्म (Ad-hoc polymorphism) एक प्रेषण प्रणाली है: एक नाम से युक्त फंक्शन के माध्यम से गति के नियंत्रण को कई अन्य फंक्शनों तक प्रेषित किया जाता है, जिसके लिए कॉल किये जाने वाले सटीक फंक्शन को निर्दिष्ट करने की जरुरत नहीं होती है। 
ओवरलोडिंग, समान नाम से परिभाषित किये जाने वाले भिन्न प्रकारों को लेने में एकाधिक फंक्शनों की मदद करती है; कम्पाइलर या इन्टरप्रेटर स्वतः ही सही वाले को कॉल करता है। 
इस तरह, फंक्शनों को "अपेण्ड" (संलग्न करने वाली) करने वाली पूर्णांकों की सूची, वास्तविक संख्याओं की सूची और इस प्रकार की सूचियों को लिखा जा सकता है और सभी अपेण्ड कहलाते हैं- और सही "अपेण्ड" फंक्शन को संलग्न किये जाने वाले प्रकार के आधार पर नाम दिया जायेगा. 
यह पैरामीट्रिक पोलिमोर्फ़िज्मसे अलग है जिसमें फंक्शनों को "जिनेरिक रूप से" लिखा जाना चाहिए, ताकि सूची के किसी भी प्रकार के साथ कार्य किया जा सके. 
ओवरलोडिंग का उपयोग करते हुए, एक ऐसा फंक्शन प्राप्त करना संभव है जो इसे पास किये जाने वाले इनपुट के प्रकार के आधार पर दो पूर्णतया भिन्न चीजों को कर सके; यह पैरामीट्रिक पोलिमोर्फ़िज्मके साथ संभव नहीं है।
ओवरलोडिंग को देखने का एक और तरीका है कि एक रूटीन को अद्वितीय रूप से इसके नाम से नहीं पहचाना जाता, बल्कि इसके नाम और संख्या, इसके पैरामीटर्स के प्रकार और क्रम के संयोजन द्वारा पहचाना जाता है। 

पोलिमोर्फ़िज्मका यह प्रकार ऑब्जेक्ट-ओरियनटेड प्रोग्रामिंग भाषा में आम है, जिनमें से कई ओपरेटर को फंक्शन के समान तरीके से ओवरलोड होने की अनुमति देते हैं (देखें ओपरेटर ओवरलोडिंग).
कुछ भाषायें जो गतिक रूप से टाइप नहीं की जाती हैं और उनमें तदर्थ पोलिमोर्फ़िज्म (ad-hoc polymorphism) की कमी होती है, उनमें फंक्शन के नाम लम्बे होते हैं जैसे codice_22, codice_23, आदि. इसे किसी के दृष्टिकोण के आधार पर लाभ (अधिक वर्णनात्मक) या हानि (ओवरली वर्बोज) के रूप में देखा जा सकता है। 

एक फायदा जो कभी कभी ओवरलोडिंग से होता है वह है विशिष्टीकरण का स्वरुप, उदाहरण, एक समान नाम से युक्त फंक्शन को कई अलग अलग तरीकों से क्रियान्वित किया जा सकता है, इनमें से प्रत्येक विशिष्ट डेटा प्रकार के लिए अनुकूलित होता है, जिस पर यह कार्य करता है। 
यह उस कोड के लिए एक सुविधाजनक इंटरफेस उपलब्ध करा सकता है, जिसे प्रदर्शन के कारणों के लिए एकाधिक स्थितियों में विशिष्टीकृत होने की आवश्यकता है। 

क्योंकि ओवरलोडिंग कम्पाइल (संकलन) के समय की जाती है, यह लेट बाइंडिंग के लिए विकल्प नहीं है जैसा कि सबटाइपिंग पोलिमोर्फ़िज्ममें पाया गया है।

प्रारंभिक बंधित भाषाओँ के लिए तदर्थ पोलिमोर्फ़िज्म (Ad-hoc polymorphism for early bound languages)
इमप्रेडीकेटिव पोलिमोर्फ़िज्म (Impredicative polymorphism) ("प्रथम श्रेणी" की बहुरूपता)
प्रबलता से टाइप की गयी भाषाओँ में पोलिमोर्फ़िज्म (प्रारम्भ में बंधित)
सबटाइपिंग पोलिमोर्फ़िज्म (या इनक्लूजन बहुरूपता) (Subtyping polymorphism (or inclusion polymorphism))