การพ้องรูป(Polymorphsim)

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

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

beta version

การพ้องรูป(Polymorphsim)

มานพ กองอุ่น php polymorphism 1,619

หลักการของการพ้องรูป(Polymorphism) คือการกำหนดให้คลาส(Class) มี พฤติกรรม(Method) ชื่อเหมือนกัน โดยสามารถกำหนดได้ 2 แบบ คือ Abstract และ Interface

Interface เป็นการกำหนดคลาส(Class) และ พฤติกรรม(Method) ที่ไม่มีตัว(Body) เวลานำไปใช้งานจะต้องทำการ implement interface 

ตัวอย่าง Interface

<?php
interface Car
{
    public function Run();
}

class Toyota implements Car
{
    private $gear;
    private $hispeed;

    public function __construct($g, $h)
    {
        $this->gear = $g;
        $this->hispeed = $h;
    }
    public function Run()
    {
        return $this->gear.' เกียร์ ความเร็วสูงสุด'.$this->hispeed;
    }
}

class Honda implements Car
{
    private $wheel;
    private $hispeed;

    public function __construct($w, $h)
    {
        $this->wheel = $w;
        $this->hispeed = $h;
    }
    public function Run()
    {
        return $this->wheel.' ล้อ ความเร็วสูงสุด'.$this->hispeed;
    }
}

$toyota = new Toyota(5, 250);
$honda = new Honda(4, 280);

echo $toyota->Run();//5 เกียร์ ความเร็วสูงสุด250
echo $honda->Run();//4 ล้อ ความเร็วสูงสุด280


Abstract เป็นการกำหนด โครงสร้างของพฤติกรรม(Method) โดยคลาส(Class) ที่สืบทอดต้องกำหนด body ให้แก่ Abstract Method

<?php
abstract class Car
{
    //บังคับให้ class ที่สืบทอดต้องมี method นี้
    abstract public function Run();

    // method ปกติ
    public function getRun()
    {
        return $this->Run();
    }
}

class Toyota extends Car
{
    public function Run()
    {
        echo 'Toyota';
    }
}

class Honda extends Car
{
    public function Run()
    {
        echo 'Honda';
    }
}

$toyota = new Toyota();
echo $toyota->getRun(); //Toyota

$honda = new Honda();
echo $honda->getRun();//Honda

 


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

มานพ กองอุ่น
admin

  • 2 เพื่อน
  • 8 ผู้ติดตาม
  • 754 โพสต์
กลับขึ้นบน