- Trong PHP, từ khóa Final chỉ áp dụng cho lớp và phương thức lớp. Chúng tôi không thể khai báo là Final trong PHP
- Vì vậy, nếu chúng ta khai báo phương thức lớp là Cuối cùng thì phương thức đó không thể được ghi đè bởi lớp con
- Tương tự như phương thức nếu chúng ta khai báo lớp là Final thì lớp đó không thể mở rộng được nữa
ví dụ 1
đầu ra
Từ khóa final ngăn các lớp con ghi đè một phương thức bằng cách thêm tiền tố vào định nghĩa bằng final. Điều đó có nghĩa là nếu chúng ta định nghĩa một phương thức bằng lệnh cuối cùng thì nó sẽ ngăn chúng ta ghi đè phương thức đó
show[100,100]; ?>
Đầu ra Lỗi nghiêm trọng. Không thể ghi đè phương thức cuối cùng A. hiển thị [] trong C. xampplitehtdocs1aa. php trên dòng 18
Trong ví dụ trên Lớp A là lớp cha của tôi. Trong đó phương thức hiển thị được đánh dấu bằng lệnh cuối cùng. Điều đó có nghĩa là phương thức show không thể ghi đè lên bất kỳ lớp con nào của nó.
Để xem lỗi lớp B xác định được mở rộng bởi A. Nó có nghĩa là B là lớp con của A. Trong B, nó đang cố xác định phương thức cuối cùng [hiển thị] trong lớp B. Cái nào sẽ tạo ra lỗi nghiêm trọng với thông báo Không thể ghi đè phương thức cuối cùng A. buổi bieu diễn[]. Điều đó có nghĩa là chúng ta không thể định nghĩa phương thức cuối cùng của lớp cha trong lớp con của nó
Sử dụng cuối cùng trước lớp
Nếu bản thân lớp đang được định nghĩa cuối cùng thì nó không thể được mở rộng. Điều đó có nghĩa là khi chúng ta định nghĩa một lớp bằng final thì nó sẽ không cho phép định nghĩa lớp con của nó
show[100,100]; ?>
Đầu ra Lỗi nghiêm trọng. Lớp B có thể không kế thừa từ lớp cuối cùng [A] trong C. xampplitehtdocs1aa. php trên dòng 17
Trong ví dụ trên, lớp A định nghĩa bằng lệnh cuối cùng. Nó có nghĩa là lớp này không thể được mở rộng. Khi lớp B được định nghĩa với phần mở rộng A [có nghĩa là B là lớp con của A]. Nhưng nó tạo ra lỗi với thông báo "Lớp B có thể không kế thừa từ lớp cuối cùng [A]". Điều đó có nghĩa là nó sẽ không cho phép tạo bất kỳ lớp con nào của A. Điều đó có nghĩa là lớp cuối cùng không thể được kế thừa
lớp học cuối cùng. Một lớp được khai báo là cuối cùng không thể được mở rộng trong tương lai. Các lớp được khai báo là cuối cùng do một số vấn đề ở cấp độ thiết kế. Người tạo lớp khai báo lớp đó là lớp cuối cùng nếu anh ta muốn lớp đó không được kế thừa do một số lý do bảo mật hoặc lý do khác. Một lớp cuối cùng có thể chứa các phương thức cuối cùng cũng như không phải là cuối cùng. Nhưng không sử dụng các phương thức cuối cùng trong lớp khi bản thân lớp được khai báo là cuối cùng vì không thể kế thừa
Trong bài viết này, chúng ta sẽ xem final class & final method trong PHP là gì, cùng với việc biết cách triển khai chúng thông qua các ví dụ
Các thuật ngữ lớp, đối tượng, phương thức và cuối cùng thuộc lập trình hướng đối tượng. Trong lập trình hướng đối tượng, có một khái niệm quan trọng được gọi là Kế thừa, cho phép một lớp kế thừa các thuộc tính của lớp khác và thậm chí có khả năng ghi đè các phương thức được kế thừa, để thay thế hành vi ban đầu đã cho. Có một số trường hợp tồn tại khi chúng ta cần ngăn không cho lớp bị kế thừa hoặc bị ghi đè. Đối với điều này, từ khóa cuối cùng có thể được sử dụng để hoàn thành tác vụ trong PHP để ngăn bất kỳ lớp hoặc phương thức nào kế thừa và ghi đè chức năng. Nó được sử dụng đơn giản bằng cách thêm tiền tố vào bất kỳ phương thức hoặc lớp nào với từ khóa cuối cùng
lớp học cuối cùng. Lớp cuối cùng là lớp không thể mở rộng bởi các lớp khác. Vì vậy, một Lớp được khai báo với từ khóa cuối cùng không có các lớp con. Một lớp có thể được khai báo là cuối cùng bằng cách đặt tiền tố từ khóa cuối cùng trước Lớp. Cú pháp để xác định lớp cuối cùng được đưa ra dưới đây
cú pháp
final Class className
phương pháp cuối cùng. Một phương thức được coi là phương thức cuối cùng nếu nó được bắt đầu bằng từ khóa cuối cùng. Các phương thức cuối cùng là các phương thức không thể ghi đè. Vì vậy, các phương thức này không thể bị ghi đè trong lớp con/lớp con. Nó tăng tính bảo mật bằng cách ngăn chặn việc sửa đổi các chức năng. Cú pháp để xác định một phương thức cuối cùng được đưa ra dưới đây
cú pháp
final function functionName[Parameter1, Parameter2, ...];
Chúng ta sẽ hiểu những khái niệm này thông qua các ví dụ dưới đây
ví dụ 1. Ví dụ dưới đây đưa ra một lỗi. Bởi vì ở đây lớp ParentGFG được khai báo là cuối cùng. Vì vậy, bất kỳ lớp nào cũng không thể kế thừa các lớp được định nghĩa là cuối cùng. Vì vậy, ở đây lớp ChildGFG không thể kế thừa lớp ParentGFG cuối cùng. Vì vậy, PHP sẽ không tạo lớp con cho lớp ParentGFG
PHP
final function functionName[Parameter1, Parameter2, ...];2
final function functionName[Parameter1, Parameter2, ...];3
final function functionName[Parameter1, Parameter2, ...];4
final function functionName[Parameter1, Parameter2, ...];5
final function functionName[Parameter1, Parameter2, ...];6
final function functionName[Parameter1, Parameter2, ...];7
final function functionName[Parameter1, Parameter2, ...];0
final function functionName[Parameter1, Parameter2, ...];1
final function functionName[Parameter1, Parameter2, ...];2
final function functionName[Parameter1, Parameter2, ...];3
final function functionName[Parameter1, Parameter2, ...];4
final function functionName[Parameter1, Parameter2, ...];5
final function functionName[Parameter1, Parameter2, ...];6
final function functionName[Parameter1, Parameter2, ...];7
final function functionName[Parameter1, Parameter2, ...];3____37
final function functionName[Parameter1, Parameter2, ...];3____131
show[100,100]; ?>32____133
show[100,100]; ?>34
final function functionName[Parameter1, Parameter2, ...];6
final function functionName[Parameter1, Parameter2, ...];7
final function functionName[Parameter1, Parameter2, ...];0
final function functionName[Parameter1, Parameter2, ...];1
show[100,100]; ?>39
final function functionName[Parameter1, Parameter2, ...];3
final Class className21
final function functionName[Parameter1, Parameter2, ...];5
final function functionName[Parameter1, Parameter2, ...];6
final function functionName[Parameter1, Parameter2, ...];7
final function functionName[Parameter1, Parameter2, ...];3____37
final function functionName[Parameter1, Parameter2, ...];3______228
final Class className29
final function functionName[Parameter1, Parameter2, ...];20
final function functionName[Parameter1, Parameter2, ...];21
final function functionName[Parameter1, Parameter2, ...];3______228
final function functionName[Parameter1, Parameter2, ...];24
final function functionName[Parameter1, Parameter2, ...];0
final function functionName[Parameter1, Parameter2, ...];26
final function functionName[Parameter1, Parameter2, ...];27
đầu ra
show[100,100]; ?>3
ví dụ 2. Ví dụ dưới đây thể hiện rằng bất kỳ chức năng nào được định nghĩa là cuối cùng trong lớp cha không thể bị ghi đè bởi các lớp con của nó. Lớp ParentGFG có phương thức print[] được khai báo là final. Vì vậy, bất cứ khi nào bất kỳ lớp con nào của ParentGFG như ChildGFG cố gắng ghi đè phương thức print[], PHP sẽ báo lỗi