کلاس های انتزاعی در PHP
در این بخش به برسی کلاس های انتزاعی در PHP می پردازیم، کلاس های abstract در PHP به کلاس هایی گفته می شود که قابل نمونه گیری نیستند و تنها برای ارث بری استفاده می شوند.
یعنی چی ؟!
کلاس های انتزاعی به تنهایی کارایی و کاربردی ندارند و نمی توانیم از آنها اشیا بسازیم، کلاس های abstract
برای تکمیل شدن به کلاس های فرزند خود نیاز دارند و تنها برای ارث بری استفاده می شوند که در ادامه مثال ها و توضیحات بیشتری خواهیم داد.
هر کلاس انتزاعی حداقل یک متد از نوع abstract را شامل می شود. متد انتزاعی یا همان abstract متدی هست که اعلان شده اما کد نویسی آن پیاده سازی نشده است.
برای تعریف یک کلاس یا متد انتزاعی از کلید واژه abstract
استفاده می کنیم.
نحوه استفاده از abstract در کلاس های PHP
هنگامی که یک کلاس فرزند می خواهد از کلاس والد از نوع abstract ارث بری کند، باید تمامی متد های کلاس والد را مجدداً با همان نام بازنویسی کند، همچنین باید نوع سطح دسترسی متد ها در کلاس فرزند هم یکسان باشد یعنی اگر یک متد داخل کلاس والد از نوع protected هست باید در کلاس فرزند هم از نوع protected باشد و حتی تعداد آرگومان های متد نیز باید یکسان باشد، البته کلاس فرزند می تواند آرگومان های اضافی و خاص خود را نیز داشته باشد.
در نتیجه هنگامی که یک کلاس فرزند از کلاس انتزاعی ارث بری می کند این قوانین را داریم:
- متد کلاس فرزند باید با همان نام تعریف شود و متد انتزاعی والد را مجدد اعلام کند.
- متد کلاس فرزند باید با همان نوع سطح دسترسی یکسان یا کمتر تعریف بشود.
- تعداد آرگومان های مورد نیاز باید یکسان باشد. با این حال، کلاس فرزند می تواند آرگومان های اختیاری خود را نیز داشته باشد.
مثال
خروجی
Choose German quality! I'm an Audi!
Proud to be Swedish! I'm a Volvo!
French extravagance! I'm a Citroen!
توضیحات در رابطه با مثال بالا
کلاس های Audi و Volvo و Citroen از کلاس انتزاعی Car ارث بری می کنند، این کلاس ها می توانند از پراپرتی های $name
و متد __constract($name)
استفاده کنند، با توجه به اینکه داخل کلاس والد ما یک متد از نوع abstract داریم (intro()
) تمام کلاس های فرزند باید متد intro()
را مجدد کد نویسی کنند که در واقع این متد قرار است پیغامی را نمایش بدهد.
مثال های بیشتر برای کلاس های Abstract در PHP
در این بخش برای درک بهتر مطالب مثال هایی را قرار داده ایم، با دقت کد ها را مطالعه و تجزیه و تحلیل کنید سپس برای یادگیری بهتر آنها را آزمون و خطا کنید.
مثال
در مثال زیر ما یک متد انتزاعی داریم که دارای یک آرگومان است:
خروجی
Mr. John Doe
Mrs. Jane Doe
مثال
در مثال زیر ما یک متد انزاعی داریم که دارای یک آرگومان است، همچنین کلاس های فرزند همان متد را با چندین آرگومان اختیاری دیگر تعریف می کنند:
خروجی
Dear Mr. John Doe
Dear Mrs. Jane Doe
آیا این مطلب برای شما مفید بود ؟