Lớp Trừu Tượng trong OOP PHP
Giả sử bạn có lớp User, và
kế thừa từ nó là các lớp Employee và
Student.
Trong đó, giả định rằng bạn sẽ tạo
đối tượng của các lớp Employee và Student,
nhưng không tạo đối tượng của lớp User -
vì lớp này chỉ được sử dụng để
nhóm các thuộc tính và phương thức chung cho các lớp
kế thừa của nó.
Trong trường hợp này, bạn có thể cưỡng chế cấm
tạo đối tượng của lớp User, để
bạn hoặc một lập trình viên khác không vô tình
tạo ra chúng ở đâu đó.
Để làm điều này, tồn tại cái gọi là các lớp trừu tượng. Các lớp trừu tượng là những lớp được thiết kế để kế thừa từ chúng. Đồng thời, không thể tạo đối tượng của các lớp như vậy.
Để khai báo một lớp là trừu tượng,
cần viết từ khóa
abstract khi khai báo nó:
<?php
abstract class User
{
}
?>
Vậy, hãy viết phần triển khai của lớp trừu tượng
User. Giả sử nó có thuộc tính private
name, cùng với các getter và setter
cho nó:
<?php
abstract class User
{
private $name;
public function getName()
{
return $this->name;
}
public function setName($name)
{
$this->name = $name;
}
}
?>
Nỗ lực tạo đối tượng của lớp User
sẽ gây ra lỗi:
<?php
$user = new User; // sẽ báo lỗi
?>
Nhưng việc kế thừa từ lớp của chúng ta thì
sẽ có thể. Hãy tạo lớp Employee, lớp này
sẽ kế thừa từ lớp trừu tượng
User của chúng ta:
<?php
class Employee extends User
{
private $salary;
public function getSalary()
{
return $this->salary;
}
public function setSalary($salary)
{
$this->salary = $salary;
}
}
?>
Hãy tạo một đối tượng của lớp Employee -
mọi thứ sẽ hoạt động:
<?php
$employee = new Employee;
$employee->setName('john'); // phương thức của lớp cha, tức lớp User
$employee->setSalary(1000); // phương thức riêng, tức của lớp Employee
echo $employee->getName(); // sẽ in ra 'john'
echo $employee->getSalary(); // sẽ in ra 1000
?>
Hãy tạo một lớp trừu tượng Figure,
đại diện cho một hình học
hình dạng. Hãy để các lớp cho hình tròn, hình chữ nhật và hình vuông kế thừa từ nó.