การสืบทอด(Inheritance)

wave
มานพ กองอุ่น 24 ก.ค. 2016 21:34:11 7,072

คุณสมบัติอีกอย่างที่สำคัญของการเขียนโปรแกรมเชิงวัตถุคือการสืบทอด(Inheritance) โดยคลาส(Class) หนึ่งสามารถสืบทอดจากอีกคลาส(Class) ได้ โดยใช้ keyword ว่า extends ซึ่งคลาสที่สืบทอดไปแล้วนั้นจะมีคุณสมบัติ(Property) และ พฤติกรรม(Method) เหมือนคลาสแม่ทุกประการ ยกเว้นการกำหนด encapsulation หรือการห่อหุ้ม ที่เป็น private ซึ่จะกล่าวถึง การห่อหุ้ม(Encapsulation) ในลำดับต่อไป

ตัวอย่างการสืบทอด(Inheritance)

<?php
class A
{
    public $var = 'Hello';

    public function sayHello()
    {
        echo $this->var;
    }
}

//class B สืบทอดจาก class A

class B extends A
{

}

//สร้าง object
$obj = new B();
$obj->sayHello();

จะเห็นว่า class B สืบทอด(extends) มาจาก class A ซึ่ง class B ไม่มี คุณสมบัติ(Property) และพฤติกรรม(Method) ใดๆ เลย แต่เราสามารถสร้างวัตถุ(Object) จาก class B และสามารถเรียกพฤติกรรม(Method) จาก class B ได้ เพราะ class B สืบทอดมาจาก class A หมายความว่า class A กำหนดอะไรไว้ class B ก็จะมีเหมือนกัน

และนอกจากนั้นใน class B สามารถเพิ่มคุณสมบัติ(Property) และพฤติกรรม(Method) เพิ่มเติมที่นอกเหนือจาก class A ได้อีกด้วย พูดง่ายๆ ว่า class B ซึ่งเป็น class ลูก มีความสามารถนอกเหนือจาก class A ซึ่งเป็น class แม่ได้เช่น

<?php
class A
{
    public $var = 'Hello';

    public function sayHello()
    {
        echo $this->var;
    }
}

//class B สืบทอดจาก class A

class B extends A
{
    public $var2 = 'World';
    
    public function sayWorld()
    {
        echo $this->var2;
    }

}

//สร้าง object
$obj = new B();
$obj->sayHello();
$obj->sayWorld();
// HelloWorld

ดังนั้นไม่ต้องตกใจว่าทำไมบางทีเวลาเรียกพฤติกรรม(Method) นี้ไม่มีในคลาส(Class) ที่เรากำลังใช้งานอยู่ ต้องดูว่าในคลาส(Class) แม่ที่สืบทอดมานั้นมีหรือเปล่านั่นเอง

การสืบทอดนั้นสามารถสืบทอดได้ไม่จำกัดจำนวนชั้นของคลาส(Class) เช่นอาจมีทั้ง ลูก หลาน เหลน โหลน ก็ได้

Reference site: http://php.net/manual/en/language.oop5.inheritance.php

 


ความคิดเห็น

หากบทเรียนรู้มีความผิดพลาดประการใด หรือมีข้อเสนอแนะกรุณาแจ้ง contact@programmerthailand.com

เขียนบทเรียนรู้ของคุณ

รายละเอียด
  • ดู 7,072
  • รักเลย 0
  • หมวดหมู่ PHP Object Oriented Programming (OOP)
  • เขียนเมื่อ
  • แก้ไขเมื่อ
  • Tags php inheritance
ข้อมูลผู้เขียน
มานพ กองอุ่น

มานพ กองอุ่น

เป็นสมาชิกเมื่อ: 18 ธ.ค. 2009