PHP में OOP के अमूर्त वर्ग

मान लीजिए कि आपके पास एक वर्ग User है, और इससे Employee और Student वर्ग विरासत में मिलते हैं।

इस मामले में यह माना जाता है कि आप Employee और Student वर्गों की वस्तुएं बनाएंगे, लेकिन User वर्ग की वस्तुएं - नहीं बनाएंगे, क्योंकि यह वर्ग केवल अपने उत्तराधिकारियों के सामान्य गुणों और विधियों को समूहित करने के लिए उपयोग किया जाता है।

इस मामले में User वर्ग की वस्तुएं बनाने पर जबरन प्रतिबंध लगाया जा सकता है, ताकि आप या कोई अन्य प्रोग्रामर कहीं भी उन्हें गलती से न बना सकें।

इसके लिए तथाकथित अमूर्त वर्ग मौजूद हैं। अमूर्त वर्ग ऐसे वर्ग होते हैं जो उनसे विरासत लेने के लिए होते हैं। इस मामले में ऐसी वर्गों की वस्तुएं नहीं बनाई जा सकतीं।

एक वर्ग को अमूर्त घोषित करने के लिए, इसकी घोषणा के समय abstract कीवर्ड लिखना आवश्यक है:

User.php<?php
  abstract class User
  {
    
  }
?>

तो, आइए अमूर्त वर्ग User का कार्यान्वयन लिखें। मान लीजिए कि इसमें एक निजी गुण name होगा, और इसके लिए गेटर्स और सेटर्स भी होंगे:

User.php<?php
  abstract class User
  {
    private $name;
    
    public function getName()
    {
      return $this->name;
    }
    
    public function setName($name)
    {
      $this->name = $name;
    }
  }
?>

User वर्ग की एक वस्तु बनाने का प्रयास एक त्रुटि उत्पन्न करेगा:

index.php<?php
  $user = new User; // त्रुटि देगा
?>

लेकिन हमारे वर्ग से विरासत लेना संभव होगा। आइए Employee वर्ग बनाएं, जो हमारे अमूर्त वर्ग User से विरासत लेगा:

Employee.php<?php
  class Employee extends User
  {
    private $salary;
    
    public function getSalary()
    {
      return $this->salary;
    }
    
    public function setSalary($salary)
    {
      $this->salary = $salary;
    }
    
  }
?>

Employee वर्ग की एक वस्तु बनाएं - सब कुछ काम करेगा:

index.php<?php
  $employee = new Employee;
  $employee->setName('john');  // मूल वर्ग की विधि, यानी User वर्ग
  $employee->setSalary(1000);  // अपनी विधि, यानी Employee वर्ग
  
  echo $employee->getName();   // 'john' आउटपुट करेगा
  echo $employee->getSalary(); // 1000 आउटपुट करेगा
?>
Задание 1

एक अमूर्त वर्ग Figure बनाएं, जो एक ज्यामितीय आकृति का प्रतिनिधित्व करता हो। मान लीजिए कि इससे वृत्त, आयत और वर्ग के लिए वर्ग विरासत में मिलते हैं।