php

جلسه ۵۵: کلاس ها و ارث بری قسمت ۶ در php

وراثت

در این بخش می خواهیم باتوجه به بیس و کلاس های مشتق شده، درمورد مفهوم وراثت صحبت کنیم. سرفصل مباحث این جلسه به شرح زیر می باشد:

  • وراثت چیست؟
  • واژه شناسی
  • مشخصات
  • نشانه گذاری
  • مثال

وراثت چیست؟

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

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

واژه شناسی

  • کلاس اولیه یا والد: توسط کلاس فرزند ارث بری میشود.
  • کلاس مشتق شده یا فرزند: از کلاس اولیه یا والد ارث بری میکند.

مشخصات

یک کلاس مشتق شده شامل:

  • تمامی اعضای تعریف شده در کلاس مشتق شده است.
  • تمامی اعضای تعریف شده در کلاس اولیه است.

یک کلاس مشتق شده می تواند:

  • تمامی اعضای public و protected تعریف شده در کلاس مشتق شده دسترسی داشته باشد.
  • تمامی اعضای public و protected تعریف شده در کلاس اولیه دسترسی داشته باشد.

یک کلاس مشتق شده نمی تواند:

  • سازندگان و تخریب کنندگان را به ارث ببرد.

وراثت یکی از بزرگترین دلایل برای استفاده از برنامه نویسی شی گرا در PHP است.

نشانه گذاری:

کلاس ها با استفاده از کلمه کلیدی extends می توانند متدها و ویژگی های کلاس دیگری را به ارث ببرند. بیایید به نشانه گذاری قطعه کد زیر نگاهی بیاندازیم:

<?php
class Shape { //base class
 //body
}

//derived class inherits from another class by using the keyword extends 
class Square extends Shape {  
      //body
}
?>

مثال

بیایید مثالی با کلاس اولیه shape و کلاس مشتق شده square را مشاهده کنیم:

<?php
class Shape
{ //base class
    public $sides = 0;

    public $name = " ";

    public function __construct($name, $sides)
    { //base class constructor
        $this->sides = $sides;
        $this->name = $name;
    }

    public function description()
    {
        return "A $this->name with $this->sides sides.";
    }
}

class Square extends Shape
{ //derived class inheriting from base class
    public $sideLength = 0;

    public function __construct($sideLength)
    {
        parent::__construct("square", 4); //calling parent class constructor
        $this->sideLength = $sideLength;
    }

    public function perimeter()
    {
        return $this->sides * $this->sideLength;
    }

    public function area()
    {
        return $this->sideLength * $this->sideLength;
    }
}

$mySquare = new Square(10);
$mySquare->description();
echo "Perimeter of the square is " . $mySquare->perimeter() . "\n";
echo "Area of the square is ";
echo $mySquare->area();
?>

در قطعه کد بالا، کلاس مشتق شده square از کلاس اولیه shape مشتق می شود و در این حین، تمامی ویژگی های sides$ و names$ و همچنین متد ()description را به ارث می برد. سپس ویژگی جدید sideLength$ و متدهای ()preimeter و ()area را تعریف می کند. همانطور که در مثال بالا مشاهده کردید، کلاس مشتق شده نمی تواند سازنده یا تخریب کنند کلاس اولیه را به ارث ببرد، هرچند همانطور که در خط بیست و پنجم مشاهده کردیم، می تواند سازنده کلاس اولیه را فراخوانی کند. علاوه بر این زمانی که سازنده کلاس مشتق شده فراخوانی می شود، در ادامه سازنده کلاس والد خود را فراخوانی خواهد کرد و در آنجا name و side و سپس sideLenght را مقداردهی خواهد کرد. به پایان بحث وراثت رسیدیم. در بخش بعدی می خواهیم در مورد بررسی استثنا ها صحبت کنیم.

نوشته های مشابه

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

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

دکمه بازگشت به بالا