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