วันผู้สูงอายุแห่งชาติ


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

คู่มือการเรียนรู้ PHP Object Oriented Programming (OOP)

บทเรียนดีๆ สำหรับผู้ที่ต้องการแบ่งปัน บทเรียนของคุณอาจมีค่าสำหรับอีกหลายๆ คน

beta version

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

มานพ กองอุ่น php inheritance 1632

คุณสมบัติอีกอย่างที่สำคัญของการเขียนโปรแกรมเชิงวัตถุคือการสืบทอด(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
กลับขึ้นบน