Các phương thức riêng tư trong kế thừa OOP trong PHP
Các phương thức riêng tư không được kế thừa. Điều này được thiết kế cố ý để không vi phạm tính đóng gói. Hãy cùng xem xét một ví dụ. Giả sử chúng ta có lớp cha sau đây với một phương thức riêng tư:
<?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);
}
}
?>
Giả sử lớp sau kế thừa từ lớp cha:
<?php
class Student extends User {
private $surn;
public function setSurn($surn) {
$this->surn = $surn;
}
public function getSurn() {
return $this->surn;
}
}
?>
Giả sử lớp con muốn sử dụng phương thức riêng tư của lớp cha. PHP sẽ không cho phép điều này và sẽ đưa ra lỗi:
<?php
class Student extends User {
private $surn;
public function setSurn($surn) {
$this->surn = $surn;
}
public function getSurn() {
return $this->capeFirst($this->surn); // sẽ có lỗi
}
}
?>
Hãy thử trong lớp Employee
sử dụng phương thức riêng tư
của lớp cha.