کلاس های FinalوAbstract در PHP
در پست قصد دارم به معرفی کلاس هایی از نوع abstract و کلاس final در شی گرا بپردازیم. مثال هایی از این نوع کلاس به زبان PHP بزنیم.
کلاس های abstract :
کلاس هایی که از نوع abstract تعریف شوند نمی توان از آنها شی ساخت.
و فقط می توانیم از متدها و پراپرتی های این نوع کلاس در کلاس های مشتق شده از آن استفاده کنیم.
مثال :
۱ ۲ ۳ ۴ ۵ ۶ ۷ | abstract class iwebpro { public function name() { echo 'behnam'; } } $iwebpro = new iwebpro; $iwebpro->name; |
کد بالا خطا دارد دلیل آن هم اینه که از کلاس iwebpro به صورت abstract تعریف شده.
abstract کردن متد های داخل کلاس :
اگر متد های داخل کلاس را به صورت Abstract تعریف کنیم می توانیم متدهایمان را بدون بدنه تعریف کنیم و در کلاس هایی که از این کلاس مشتق می شوند متد های بدون بدنه را تکمیل کنیم.
نکته : متد هایی که به صورت abstract تعریف شده اند باید کلاسشان نیز abstract باشد.
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ ۱۱ ۱۲ ۱۳ ۱۴ ۱۵ | abstract class iwebpro { abstract function name(); } class My_web_site extends iwebpro { public function name() { echo 'behnam rasouli'; } } $iwebpro = new My_web_site(); $iwebpro->name(); |
کلاس های final :
کلاس هایی که به صورت Final تعریف شوند قابل ارث بری، برای سایر کلاس ها نیستند.
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ | final class iwebpro{ } class My_web_site extends iwebpro{ } $iwebpro=new My_web_site(); |
کد بالا خطا دارد دلیل آن هم اینه که کلاس iwebpro به صورت final تعریف شده و قابل ارث بری برای کلاس My_web_site نیست.
متد های final :
متد هایی که به صورت final تعریف شوند دیگه در سایر کلاس های مشتق شده قابل بازنویسی نیستند.
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ ۱۱ ۱۲ ۱۳ ۱۴ ۱۵ ۱۶ ۱۷ ۱۸ | class iwebpro { final public function name() { echo 'behnam rasouli'; } } class My_web_site extends iwebpro { public function name() { echo 'reza'; } } $iwebpro = new My_web_site(); $iwebpro->name(); |
کد بالا خطا میده دلیل آن هم اینه که متد name به صورت final تعریف شده و قابل بازنویسی در کلاس مشتق شده نیست.
موفق باشید.
ممنون، برای من مفید بود.