وراثت

وراثت به یک کلاس اجازه می‌دهد که خصوصیات یا متدهایی را از کلاس دیگر به ارث برد. وراثت مانند رابطه پدر و پسری می‌ماند به طوریکه فرزند خصوصیاتی از قبیل قیافه و رفتار را از پدر خود به ارث برده باشد.

همه متد و خصوصیات کلاس پایه می‌توانند در کلاس مشتق مورد استفاده قرار بگیرند به استثنای اعضا و متدهای با سطح دسترسی private . مفهوم اصلی وراثت در مثال زیر نشان داده شده است :

   1: <?php
   2: 
   3:     class classParent
   4:     {      
   5:         private function privateMessage()
   6:         {
   7:             echo 'This is private Message From Parent Class!';
   8:         }
   9:                
  10:         public function publicMessage()
  11:         {
  12:             echo 'This is public Message From Parent Class!';
  13:         }
  14:     }
  15:     
  16:     class classChild extends classParent
  17:     {
  18:         
  19:     }
  20:     
  21:     $child = new classChild();
  22:     
  23:     $child -> publicMessage(); 
  24:     $child -> privateMessage ();
  25:  
  26: ?>
This is public Message From Parent Class!
 Fatal error: Call to private method classParent::privateMessage()

همانطور که مشاهده می‌کنید در کد بالا دو کلاس تعریف کرده‌ایم: یکی کلاس classParent (خطوط 14-3) که دارای دو متد یکی با سطح دسترسی private و دیگری با سطح دسترسی public است و کلاس دیگر (خطوط 19-16) که در بدنه خود هیچ متد یا متغیری ندارد. نحوه ارث بری یک کلاس به صورت زیر است :

class Child extends Parent

که در خط 16 مشخص کرده‌ایم که کلاس classChild قرار است از کلاس classParent ارث بری کند :

class classChild extends classParent

در خط 21 یک نمونه از کلاس فرزند ایجاد می‌کنیم و در خطوط 23 و 24 دو متد کلاس پدر را فراخوانی می‌کنیم. همانطور که در خروجی مشاهده می‌کنید متدی که دارای سطح دسترسی public است فراخوانی و اجرا شده ولی در فراخوانی متدی با سطح دسترسی private با خطا مواجه می‌شویم. در پایان یادآور می‌شویم که کلاس فرزند (خطوط 19-16) هیچ متد یا متغیری در بدنه خود ندارد، ولی چون از کلاس classParent ارث بری کرده است متد با سطح دسترسی public آن را می‌تواند برای خود داشته باشد.