पॉलीमॉर्फिज्म एक ऑब्जेक्ट की कई रूप लेने की क्षमता है। OOP में पॉलीमॉर्फिज्म का सबसे आम उपयोग तब होता है जब एक पैरेंट क्लास रेफरेंस का उपयोग चाइल्ड क्लास ऑब्जेक्ट को संदर्भित करने के लिए किया जाता है।
कोई भी Java ऑब्जेक्ट जो एक से अधिक IS-A टेस्ट पास कर सकता है, उसे पॉलीमॉर्फिक माना जाता है। Java में, सभी Java ऑब्जेक्ट्स पॉलीमॉर्फिक हैं क्योंकि कोई भी ऑब्जेक्ट अपने स्वयं के टाइप के लिए और Object क्लास के लिए IS-A टेस्ट पास करेगा।
यह जानना महत्वपूर्ण है कि ऑब्जेक्ट को एक्सेस करने का एकमात्र संभावित तरीका रेफरेंस वेरिएबल के माध्यम से है। एक रेफरेंस वेरिएबल केवल एक टाइप का हो सकता है। एक बार घोषित होने पर, रेफरेंस वेरिएबल के टाइप को बदला नहीं जा सकता।
रेफरेंस वेरिएबल को अन्य ऑब्जेक्ट्स के लिए पुनः असाइन किया जा सकता है बशर्ते कि इसे final घोषित न किया गया हो। रेफरेंस वेरिएबल का टाइप उन मेथड्स को निर्धारित करेगा जिन्हें यह ऑब्जेक्ट पर इनवोक कर सकता है।
एक रेफरेंस वेरिएबल अपने घोषित टाइप के किसी भी ऑब्जेक्ट या उसके घोषित टाइप के किसी भी सबटाइप को संदर्भित कर सकता है। एक रेफरेंस वेरिएबल को क्लास या इंटरफ़ेस टाइप के रूप में घोषित किया जा सकता है।
उदाहरण
आइए एक उदाहरण देखें।
public interface Vegetarian{}
public class Animal{}
public class Deer extends Animal implements Vegetarian{}अब, Deer क्लास को पॉलीमॉर्फिक माना जाता है क्योंकि इसमें मल्टीपल इनहेरिटेंस है। उपरोक्त उदाहरणों के लिए निम्नलिखित सत्य हैं −
- A Deer IS-A Animal
- A Deer IS-A Vegetarian
- A Deer IS-A Deer
- A Deer IS-A Object
जब हम Deer ऑब्जेक्ट रेफरेंस पर रेफरेंस वेरिएबल तथ्यों को लागू करते हैं, तो निम्नलिखित घोषणाएं कानूनी हैं −
उदाहरण
Deer d = new Deer(); Animal a = d; Vegetarian v = d; Object o = d;
सभी रेफरेंस वेरिएबल्स d, a, v, o हीप में एक ही Deer ऑब्जेक्ट को संदर्भित करते हैं।