Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> PHP

पीएचपी वस्तु वंशानुक्रम

परिचय

विरासत वस्तु उन्मुख प्रोग्रामिंग पद्धति का एक महत्वपूर्ण सिद्धांत है। इस सिद्धांत का प्रयोग करते हुए दो वर्गों के बीच संबंध को परिभाषित किया जा सकता है। PHP अपने ऑब्जेक्ट मॉडल में इनहेरिटेंस का समर्थन करती है।

PHP विस्तारित . का उपयोग करता है दो वर्गों के बीच संबंध स्थापित करने के लिए कीवर्ड।

सिंटैक्स

class B extends A

जहां ए बेस क्लास है (जिसे पैरेंट भी कहा जाता है) और बी को सबक्लास या चाइल्ड क्लास कहा जाता है। चाइल्ड क्लास को पैरेंट क्लास के सार्वजनिक और संरक्षित तरीके विरासत में मिलते हैं। चाइल्ड क्लास किसी भी विरासत में मिली विधियों को फिर से परिभाषित या ओवरराइड कर सकता है। यदि नहीं, तो इनहेरिट की गई विधियां चाइल्ड क्लास के ऑब्जेक्ट के साथ उपयोग किए जाने पर, पैरेंट क्लास में परिभाषित अपनी कार्यक्षमता को बनाए रखेंगी।

पैरेंट क्लास की परिभाषा चाइल्ड क्लास की परिभाषा से पहले होनी चाहिए। इस मामले में, ए क्लास की परिभाषा स्क्रिप्ट में क्लास बी की परिभाषा से पहले दिखाई देनी चाहिए।

उदाहरण

<?php
class A{
   //properties, constants and methods of class A
}
class B extends A{
   //public and protected methods inherited
}
?>

यदि ऑटोलोडिंग सक्षम है, तो क्लास स्क्रिप्ट लोड करके पैरेंट क्लास की परिभाषा प्राप्त की जाती है।

विरासत उदाहरण

निम्नलिखित कोड से पता चलता है कि चाइल्ड क्लास को पैरेंट क्लास के सार्वजनिक और संरक्षित सदस्यों को विरासत में मिला है

उदाहरण

<?php
class parentclass{
   public function publicmethod(){
      echo "This is public method of parent class\n" ;
   }
   protected function protectedmethod(){
      echo "This is protected method of parent class\n" ;
   }
   private function privatemethod(){
      echo "This is private method of parent class\n" ;
   }
}
class childclass extends parentclass{
   public function childmethod(){
      $this->protectedmethod();
      //$this->privatemethod(); //this will produce error
   }
}
$obj=new childclass();
$obj->publicmethod();
$obj->childmethod();
?>

आउटपुट

यह निम्नलिखित परिणाम देगा। -

This is public method of parent class
This is protected method of parent class
PHP Fatal error: Uncaught Error: Call to private method parentclass::privatemethod() from context 'childclass'

विधि अधिभावी उदाहरण

यदि मूल वर्ग से विरासत में मिली एक विधि को चाइल्ड क्लास में फिर से परिभाषित किया जाता है, तो नई परिभाषा पहले की कार्यक्षमता को ओवरराइड कर देती है। निम्नलिखित उदाहरण में, publicmethod को फिर से चाइल्ड क्लास में परिभाषित किया गया है

उदाहरण

<?php
class parentclass{
public function publicmethod(){
   echo "This is public method of parent class\n" ;
}
protected function protectedmethod(){
   echo "This is protected method of parent class\n" ;
}
private function privatemethod(){
   echo "This is private method of parent class\n" ;
}
}
class childclass extends parentclass{
   public function publicmethod(){
      echo "public method of parent class is overridden in child class\n" ;
   }
}
$obj=new childclass();
$obj->publicmethod();
?>

आउटपुट

यह निम्नलिखित परिणाम देगा। -

public method of parent class is overridden in child class

पदानुक्रमिक वंशानुक्रम

PHP एकाधिक विरासत का समर्थन नहीं करता है। इसलिए एक वर्ग दो या दो से अधिक वर्गों का विस्तार नहीं कर सकता है। हालांकि, यह निम्न प्रकार से विरासत में मिली विरासत का समर्थन करता है:

उदाहरण

<?php
class A{
   function test(){
      echo "method in A class";
   }
}
class B extends A{
   //
}
class C extends B{
   //
}
$obj=new C();
$obj->test();
?>

आउटपुट

यह निम्नलिखित परिणाम दिखाएगा

method in A class

  1. सी # में ऑब्जेक्ट क्लास

    ऑब्जेक्ट क्लास सी # में सभी वर्गों का आधार वर्ग है। C# पर इसकी निम्नलिखित विधियाँ हैं। Sr.No विधि और विवरण 1 बराबर(वस्तु) निर्धारित करता है कि निर्दिष्ट वस्तु वर्तमान वस्तु के बराबर है या नहीं। 2 बराबर (वस्तु, वस्तु, निर्धारित करता है कि निर्दिष्ट ऑब्जेक्ट इंस्टेंस को समान माना जाता है या नही

  1. सी # में विरासत क्या है?

    वंशानुक्रम के माध्यम से, आप एक वर्ग को किसी अन्य वर्ग के संदर्भ में परिभाषित कर सकते हैं, जिससे एप्लिकेशन बनाना और बनाए रखना आसान हो जाता है। यह कोड कार्यक्षमता का पुन:उपयोग करने और कार्यान्वयन समय को गति देने का अवसर भी प्रदान करता है। वंशानुक्रम आधार वर्ग के साथ-साथ व्युत्पन्न वर्ग की अवधारणा पर

  1. सी # में स्टैक क्लास

    स्टैक क्लास ऑब्जेक्ट के लास्ट-इन, फर्स्ट आउट संग्रह का प्रतिनिधित्व करता है। इसका उपयोग तब किया जाता है जब आपको वस्तुओं की अंतिम-इन, पहली-आउट पहुंच की आवश्यकता होती है। निम्नलिखित स्टैक वर्ग की संपत्ति है - गणना − स्टैक में तत्वों की संख्या प्राप्त करें। स्टैक क्लास की विधियाँ निम्नलिखित हैं