در ادامه بحث ارث بری:
- برای دسترسی و اعمال قالبیت های متدی که باز نویسی شده از parent:: استفاده میشه.
- برای دسترسی به متد ها و پروپرتی های سوپر کلاس باید از parent:: استفاده کرد
parent::sayHello(); - نکته مهم برای کلاس هایی که از کلاس دیگری ارث می برند : نباید متد کانستراکتور ایجاد کرد
- ساب کلاس ها میتونن از متد ها ای که پابلیک یا پرایویت هستن ارث ببرن
subclass inheritance all public and protected method from superclass
مثال:
class A { function example() { echo "I am A::example() and provide basic functionality.<br />\n"; } }
class B extends A { function example() { echo "I am B::example() and provide additional functionality.<br />\n"; parent::example(); } }
$b = new B; // This will call B::example(), which will in turn call A::example(). $b->example();
نحوه ی جلوگیری از دوباره نویسی یک متد در سوپرکلاس
اگر برای هر متدی که نمی خواهید دوباره نویسی شود کلمه ی کلیدی
final را قرار دهید .
کلاس هایی که از کلاس مذکور ارث می برند نمی توانند آن متد را دوباره نویسی کنند
مثال:
class SuperClass { public final function someMethod() { //..something here } }
class SubClass extends SuperClass { public function someMethod() { // متد های سوپر کلاس اگر با کلمه کلیدی final // نوشته شوند غیر قابل دوباره نویسی هستند // با خطا مواجه می شود. } }
// جلوگیری از ارث بردن کلاس //preventing from extending // برای جلوگیری از ارث بری یک کلاس می توان از کلمه کلیدی final در تعریف کلاس استفاده کرد final class aclass { } class bclass extends aclass { // با خطا مواجه خواهد شد. }