วิธีการส่วนตัวในการสืบทอดใน OOP ใน PHP
วิธีการส่วนตัวไม่ได้รับการสืบทอด นี่ถูกออกแบบมาเพื่อไม่ให้ละเมิด การห่อหุ้ม ลองดูตัวอย่าง สมมติว่าเรามีคลาสหลัก ที่มีเมธอดส่วนตัวดังนี้:
<?php
class User {
private $name;
public function setName($name) {
$this->name = $name;
}
public function getName() {
return $this->capeFirst($this->name);
}
private function capeFirst($str) {
return ucfirst($str);
}
}
?>
สมมติว่าคลาสต่อไปนี้สืบทอดมาจาก คลาสหลัก:
<?php
class Student extends User {
private $surn;
public function setSurn($surn) {
$this->surn = $surn;
}
public function getSurn() {
return $this->surn;
}
}
?>
สมมติว่าคลาสลูกต้องการใช้ เมธอดส่วนตัวของคลาสแม่ PHP จะไม่อนุญาตและจะแสดงข้อผิดพลาด:
<?php
class Student extends User {
private $surn;
public function setSurn($surn) {
$this->surn = $surn;
}
public function getSurn() {
return $this->capeFirst($this->surn); // จะเกิดข้อผิดพลาด
}
}
?>
ลองในคลาส Employee
ใช้เมธอดส่วนตัว
ของคลาสแม่ดู