หลักการของการพ้องรูป(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
ความคิดเห็น