शुरू करने के लिए, बहुरूपता ग्रीक शब्द पॉली (जिसका अर्थ है कई) और रूपवाद (जिसका अर्थ है रूप) से लिया गया है।
बहुरूपता ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग में एक उदाहरण प्रस्तुत करता है जहां विभिन्न वर्गों में समान चीजें करने वाली विधियों का एक समान नाम होना चाहिए। बहुरूपता अनिवार्य रूप से एक ओओपी पैटर्न है जो विभिन्न प्रकार के कार्यों के साथ कई वर्गों को एक सामान्य इंटरफ़ेस को निष्पादित या साझा करने में सक्षम बनाता है। बहुरूपता की उपयोगिता यह है कि विभिन्न वर्गों में लिखे गए कोड का कोई प्रभाव नहीं पड़ता कि यह किस वर्ग का है क्योंकि वे एक ही तरह से उपयोग किए जाते हैं। यह सुनिश्चित करने के लिए कि कक्षाएं बहुरूपता दिशानिर्देश को लागू करती हैं, हम अमूर्त वर्गों या इंटरफेस के दो विकल्पों में से एक को चुन सकते हैं।
तो चलिए इंटरफ़ेस की मदद से बहुरूपता सिद्धांत को लागू करते हैं।
इंटरफ़ेस एक इंटरफ़ेस एक वर्ग के समान है सिवाय इसके कि इसमें कोड नहीं हो सकता है। एक इंटरफ़ेस विधि नामों और तर्कों को परिभाषित कर सकता है, लेकिन विधियों की सामग्री को नहीं। इंटरफ़ेस निष्पादित करने वाले किसी भी वर्ग को इंटरफ़ेस द्वारा वर्णित सभी विधियों को निष्पादित करना होगा।
उदाहरण:
<?php interface Machine { public function calcTask(); } class Circle implements Machine { private $radius; public function __construct($radius){ $this -> radius = $radius; } public function calcTask(){ return $this -> radius * $this -> radius * pi(); } } class Rectangle implements Machine { private $width; private $height; public function __construct($width, $height){ $this -> width = $width; $this -> height = $height; } public function calcTask(){ return $this -> width * $this -> height; } } $mycirc = new Circle(3); $myrect = new Rectangle(3,4); echo $mycirc->calcTask(); echo $myrect->calcTask(); ?>
आउटपुट:
28.274 12
स्पष्टीकरण:
"मशीन" के नाम वाला इंटरफ़ेस कैल्कटास्क () के नाम से एक अमूर्त विधि को परिभाषित करने के लिए इसे लागू करने वाले सभी वर्गों को करता है। तदनुसार, सर्कल वर्ग इसके अंदर संबंधित निकाय के साथ कॉलटास्क () विधि को परिभाषित करके इंटरफ़ेस को लागू करता है। आयत वर्ग मशीन इंटरफ़ेस को भी लागू करता है, लेकिन कैल्कटास्क () विधि को एक अलग निकाय के साथ परिभाषित करता है जो सर्कल क्लास कैलटैस्क () विधि से भिन्न होता है। बहुरूपता दिशानिर्देश कहता है कि, इस स्थिति के लिए, कार्य की गणना करने वाली सभी विधियों का नाम समान होगा। अब, किसी भी बिंदु पर हमें विभिन्न वर्गों के लिए कार्य की गणना करने की आवश्यकता होगी, हम कैल्कटास्क () के नाम से एक विधि को कॉल करेंगे, इस विवरण पर बहुत अधिक विचार किए बिना कि वास्तव में विभिन्न मशीन के लिए कार्य की गणना कैसे करें। मुख्य बात जो हमें जानने की जरूरत है वह है कार्य की गणना करने वाली विधि का नाम।