คลาสนามธรรมใน OOP ใน PHP
สมมติว่าคุณมีคลาส User และ
คลาส Employee กับ Student
สืบทอดมาจากมัน
ในขณะเดียวกัน คาดว่าคุณจะสร้าง
อ็อบเจ็กต์ของคลาส Employee และ Student
แต่จะไม่สร้างอ็อบเจ็กต์ของคลาส User
เนื่องจากคลาสนี้ใช้เฉพาะสำหรับ
จัดกลุ่มคุณสมบัติและเมธอดทั่วไปให้กับ
คลาสลูกที่สืบทอดจากมัน
ในกรณีนี้คุณสามารถห้าม
การสร้างอ็อบเจ็กต์ของคลาส User โดยบังคับ เพื่อที่
คุณหรือโปรแกรมเมอร์คนอื่นจะได้ไม่เผลอไปสร้างมัน
ที่ใดที่หนึ่ง
สำหรับเรื่องนี้มีสิ่งที่เรียกว่าคลาสนามธรรม (non-concrete class) คลาสนามธรรมคือ คลาสที่มีไว้สำหรับการสืบทอด จากพวกมันเท่านั้น โดยไม่สามารถ สร้างอ็อบเจ็กต์ของคลาสดังกล่าวได้
เพื่อประกาศว่าเป็นคลาสนามธรรม
จำเป็นต้องเขียนคำสั่ง
abstract ในการประกาศคลาส:
<?php
abstract class User
{
}
?>
ดังนั้น มาเขียนการใช้งานคลาสนามธรรม
User กัน สมมติว่ามันมีคุณสมบัติส่วนตัว
name และมีเก็ตเตอร์กับเซ็ตเตอร์
สำหรับมัน:
<?php
abstract class User
{
private $name;
public function getName()
{
return $this->name;
}
public function setName($name)
{
$this->name = $name;
}
}
?>
การพยายามสร้างอ็อบเจ็กต์ของคลาส User
จะทำให้เกิดข้อผิดพลาด:
<?php
$user = new User; // จะแสดงข้อผิดพลาด
?>
แต่การสืบทอดจากคลาสของเราจะสามารถ
ทำได้ มาสร้างคลาส Employee ที่
จะสืบทอดจากคลาสนามธรรมของเรา
User:
<?php
class Employee extends User
{
private $salary;
public function getSalary()
{
return $this->salary;
}
public function setSalary($salary)
{
$this->salary = $salary;
}
}
?>
มาสร้างอ็อบเจ็กต์ของคลาส Employee -
ทุกอย่างจะทำงาน:
<?php
$employee = new Employee;
$employee->setName('john'); // เมธอดของคลาสแม่ คือคลาส User
$employee->setSalary(1000); // เมธอดของตัวเอง คือคลาส Employee
echo $employee->getName(); // จะแสดง 'john'
echo $employee->getSalary(); // จะแสดง 1000
?>
สร้างคลาสนามธรรม Figure,
ที่แสดงถึงรูปทรง
เรขาคณิต ปล่อยให้คลาสสำหรับ
วงกลม, สี่เหลี่ยมผืนผ้า และสี่เหลี่ยมจัตุรัส สืบทอดจากมัน