ویژگی ها ومتدها می توانند سطح دسترسی داشته باشند و به صورت های مختلف تعریف شوند.
در php سه نوع سطح دسترسی داریم که در ادامه هر کدام را بررسی میکنیم:
Public (عمومی)
در این سطح دسترسی تمام صفتها و توابع توسط Class یا Object دیگه ای قابل دسترسی هست.
Protected (محافظت شده)
در این سطح دسترسی از طریق کلاس اصلی و کلاسهایی که از آن کلاس ارث بری داشتهاند. امکان پذیر است.
Private (خصوصی)
دسترسی به عناصر فقط از طریق خود کلاس است.
<?php
class Fruit {
public $name;
protected $color;
private $weight;
}
$mango = new Fruit();
$mango->name = ‘Mango’; // OK
$mango->color = ‘Yellow’; // ERROR
$mango->weight = ‘300’; // ERROR
?>
وراثت کمک میکنه یک شی بزرگی که تعریف شده و کلاس های نمونه از آن ایجاد شدهاند بتوانند ویژگی ها و خصوصیات را ازکلاس اصلی به ارث ببرند و یک سری وِیژگی ها و رفتارهای مخصوص به خود را داشته باشند. مثلا انسان به عنوان کلاس اصلی ویژگیهایی دارد مثل قد و وزن و رنگ پوست و …. حالا دانشجو، استاد دانشگاه هر کدام یک کلاس مشتق شده از انسان است و به علت انسان بودن ویژگی ها را نیز به ارث میبرند چون همگی قد و وزن و رنگ پوست را دارند و علاوه بر آن هر کدام به واسطه موقعیت خود می توانند رفتارهای مخصوص به خود را داشته باشند. برای اینکه یک کلاس بتواند از کلاس اصلی ارث بری کند از کلمه extends قبل از کلاس اصلی استفاده می کنیم. class Strawberry extends Fruit
در ادامه یک نمونه از ارث بری را ملاحظه میکنید:
<?php
class Fruit {
public $name;
public $color;
public function __construct($name, $color) {
$this->name = $name;
$this->color = $color;
}
public function intro() {
echo “The fruit is {$this->name} and the color is {$this->color}.”;
}
}
// Strawberry is inherited from Fruit
class Strawberry extends Fruit {
public function message() {
echo “Am I a fruit or a berry? “;
}
}
$strawberry = new Strawberry(“Strawberry”, “red”);
$strawberry->message();
$strawberry->intro();
?>
گاهی وقتها علاوه بر ارث بری از شی می توانیم از Overriding Inherited Methods استفاده میکنیم. که به معنای دوباره بازنویسی کردن است. مثلا شی ای که داره ارث بری میکنه یک تابع با اسم مشترک با شی اصلی داشته باشد و موقع اجرا برنامه تابع مربوط به خود کلاس رو اجرا میکنه نه تابع تعریف شده در والد.
پیشنهاد ویژه: آموزش php
اگر کلمه final قبل یک کلاس بیاد دیگر نمی توانیم از آن نمونه بگیریم یا بازنویسی کنیم. این ترفند زمانی به کار میآید که بخواهیم یک کلاس دستکاری نشود.