داغ ترین ویدیو بابلز لرن : هک کلاس های مجازی توسط متین برونسی

ویژگی تصویر

بررسی وراثت یا inheritance در PHP

  /  PHP   /  وراثت در PHP
بنر تبلیغاتی الف
آموزش PHP

در این بخش به بررسی وراثت در PHP می پردازیم، وراثت در برنامه نویسی شی گرا یعنی وقتی که یک کلاس از کلاس دیگری مشتق می شود.

کلاس فرزند تمامی پراپرتی های public و protected و متد ها را از کلاس والد یا مادر به ارث خواهد برد، علاوه بر این می تواند تمامی پراپرتی ها و متد های خاص خودش را هم داشته باشد.

یک کلاس مشتق شده با استفاده از کلمه کلیدی extends مشخص می شود.

مثال

تماشا در حالت تمام صفحه

خروجی

Am I a fruit or a berry? The fruit is Strawberry and the color is red.
توضیح مثال بالا

کلاس Strawberry از کلاس Fruit ارث بری کرده است. یعنی در اینجا کلاس فرزند Strawberry و کلاس والد یا مادر Fruit است.

این باعث می شود که کلاس Strawberry به تمامی پراپرتی های $name و $color که از نوع public هستند دسترسی داشته باشد، همچنین به تمامی متد های __construct() و intro() که از نوع public هستند دسترسی خواهد داشت.

فصل قبلی راجب سطح دسترسی ها یا همان مفهوم Access Modifiers صحبت کرده ایم، اگر این بخش را ندیده اید حتماً قبل از خواندن این فصل مبحث Access Modifiers ها را مطالعه کنید.

همچنین کلاس Strawberry نیز متد خاص خود را دارد: message()

وراثت و سطح دسترسی protected در PHP

در بخش قبلی یاد گرفتیم که می توانیم به پراپرتی ها و متد های با سطح دسترسی protected در کلاس ها و کلاس های مشتق شده دسترسی داشته باشیم. حالا این یعنی چی ؟! به مثال ها خوب دقت کنید…

مثال

تماشا در حالت تمام صفحه

خروجی

Am I a fruit or a berry?

در مثال بالا می بینیم که اگر بخواهیم یک متد با سطح دسترسی protected (محافظت شده) را خارج از کلاس فراخوانی کنیم خطا میگیریم. البته فراموش نکنید که متد های از نوع public بدون مشکل خارج از کلاس فراخوانی می شوند.

اکنون به مثال زیر دقت کنید:

مثال

تماشا در حالت تمام صفحه

خروجی

Am I a fruit or a berry? The fruit is Strawberry and the color is red.

در مثال بالا می بینید که همه چیز به درستی کار می کند، بخاطر اینکه متد intro() که از نوع protected هست را داخل کلاس مشتق شده استفاده کرده ایم.

لغو و تعریف مجدد متد های ارث بری شده در PHP

ما می توانیم متد های تعریف شده کلاس والد را در کلاس فرزند با همان نام مجدداً تعریف کنیم.

به مثال زیر دقت کنید: متد های __construct() و intro() در کلاس فرزند (Strawberry)، متد های __construct() و intro() در کلاس والد (Fruit) را باطل و تغییر داده است.

مثال

تماشا در حالت تمام صفحه

خروجی

The fruit is Strawberry, the color is red, and the weight is 50 gram.

کلید واژه final در PHP

از کلمه کلیدی final برای جلوگیری از ارث بری یک کلاس و یا جلوگیری از تعریف مجدد متد ها استفاده می کنیم.

مثال

در مثال زیر کلاس Strawberry نمی تواند از کلاس Fruit ارث بری کند یا فرزند آن بشود، زیرا کلاس Fruit با کلید واژه final تعریف شده است.


این قسمت/بخشی از محتوا مخفی شده است و فقط برای اعضای وب سایت قابل مشاهده می باشد، لطفاً با حساب کاربری وارد شوید.

خروجی چیزی شبیه به این خواهد بود

PHP Fatal error: Class Strawberry may not inherit from final class (Fruit) in /home/o6MTL0/prog.php on line 10

مثال

در مثال زیر کلاس Strawberry نمی تواند متد intro() را Overriding یا همان تعریف مجدد بکند زیرا این متد در کلاس Fruit با کلید واژه final تعریف شده است.


این قسمت/بخشی از محتوا مخفی شده است و فقط برای اعضای وب سایت قابل مشاهده می باشد، لطفاً با حساب کاربری وارد شوید.

خروجی چیزی شبیه به این خواهد بود

PHP Fatal error: Cannot override final method Fruit::intro() in /home/sdpysj/prog.php on line 15

آیا این مطلب برای شما مفید بود ؟

خیر
بله
بنر تبلیغاتی ج