وراثت
وراثت به یک کلاس اجازه میدهد که خصوصیات یا متدهایی را از کلاس دیگر به ارث برد. وراثت مانند رابطه پدر و پسری میماند به طوریکه فرزند خصوصیاتی از قبیل قیافه و رفتار را از پدر خود به ارث برده باشد.
همه متد و خصوصیات کلاس پایه میتوانند در کلاس مشتق مورد استفاده قرار بگیرند به استثنای اعضا و متدهای با سطح دسترسی 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 آن را میتواند برای خود داشته باشد.