آموزش PHP

وراثت و چندریختی در PHP

Inheritance in php
وراثت و چندریختی در PHP، آشنایی با مفاهیم ارث بری و چند ریختی به همراه آموزش استفاده از آنها در قالب مثال.
وراثت در PHP

وراثت در PHP

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

وراثت در PHP چیست؟

وراثت همانند معنی آن در دنیای واقعی به ارث بردن مزایا و معایب از یک شخص یا یک شی می باشد.

در دنیای برنامه نویسی ما می توانیم کلاس های متلفی از اشیا رو به صورت مستقل ایجاد کنیم اما برای اینکه حجم کار ما به عنوان توسعه دهنده کاهش پیدا کنه و همچنین مدیریت پروژه آسان تر بشه میایم با استفاده از وراثت ویژگی هایی که مشترک هستند رو در قالب یک کلاس می نویسیم و پس از آن هر کلاس یا شی دیگری که به آن ویژگی ها نیاز داشته باشد تنها آنها را فراخوانی می کند.

به چه شکل؟

 

مثال ارث بری در PHP

مرحله به مرحله پیش میریم تا درک و یادگیری مطلب ساده تر باشه.

1) در این مثال من یک فایل به نام “Vehicle”که قرار است ویژگی های مشترک وسایل نقلیه را در خودش داشته باشد ایجاد می کنم، همانطور که می دانید یکی از ویژگی های مشترک همه وسایل نقلیه حرکت کردن هست، بنابراین متدی به نام move در این کلاس نیز به شکل زیر تعریف می کنم.

				
					// Vehicle.php

<?php

class Vehile
{
    public $name;
    public function move()
    {
        echo $this->name . 'Moved.';
    }
}

				
			

2) حالا می خوام یه کلاس دیگه به نام Car ایجاد کنم که ویژگی move رو از کلاس Vehicle به ارث بببره و من نیاز نباشه دوباره اون رو در کلاسم ایجاد کنم و دوباره کاری بشه.

کلاس Car رو به شکل زیر ایجاد و ارث بری می کنم.

				
					//Car.php

<?php

class Car extends Vehile
{
}


				
			

3) الان وارد فایل index.php پروژه خودم میشم و کلاس های نوشته شده رو به شکل زیر فراخوانی و مقداردهی می کنم.

				
					//index.php

<?php

require_once 'classes/Vehicle.php';
require_once 'classes/Car.php';

$v = new Vehile();
$v->name = "Vehicle1";
$v->move();

$c = new Car();
$c->name = "car1";
$c->move();

// Result: Vehicle1Moved.car1Moved.

				
			

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

نکات مهم:

* خصوصیات یا متدهای Private قابل ارث بری نیستند.

* متدی که از نوع final ایجاد شده باشد قابل ارث بری هست اما نمی توان ویژگی به ارث برده شده را تغییر داد.

* نوع های تعریف شده برای متغیرها یا ویژگی ها از طرف فرزندان قابل تغییر نیستند، به عنوان مثال متد یا متغیری که از سمت والد public تعریف شده است، فرزند قادر به تغییر آن به نوع private یا سایر نخواهد بود.

حالا سوال پیش میاد آیا می توانیم چیزی رو که به ارث بردیم تغییر بدیم؟ بله، در قسمت دوم این مقاله بهش می پردازیم.

 

چند ریختی در PHP

ما می توانیم مواردی که که به ارث می بریم تغییر دهیم، یک متد بسته به اینکه روی کلاس والد داره فراخوانی میشه یا روی کلاس فرزند، روش کارش تغییر میکنه.

در تعریف دیگر، یک متد خاص و واحد روی اشیاء مختلف رفتارش عوض میشه و فرزند میتونه رفتار والدش رو تغییر بده که به این فرایند چند ریختی گفته می شود.

به عنوان مثال در مثال ارث بری من می تونم کلاس car رو به شکل زیر بنویسم:

				
					<?php

class Car extends Vehile
{
    public function move()
    {
        parent::move();
        echo '<label style="color:red">';
        echo $this->name;
        echo '</label>';
    }
}

				
			

در این مثال من علاوه بر دسترسی به خود parent می تونم متد move رو ارث بری کنم و به شکل دلخواه خودم ازش استفاده کنم که در اینجا تغییر رنگ هست.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *