Bài 7. Final trong PHP

Chào các bạn. Ở những bài học trước chúng ta đã làm quen với các khái niệm về kế thừa trong PHP. Và có một vấn đề vô cùng nghiêm trọng. Đó là hiện tượng Override khi các bạn định nghĩa trùng tên thuộc tính hoặc phương thức ở class cha và class con.

Điều này sẽ gây ra mất dữ liệu của class cha, dẫn đến những sai xót về chương trình và xảy ra lỗi hệ thống. Vậy làm sao để chúng ta kiểm soát được hiện tượng Override khi sử dụng kế thừa ? Đặc biệt là những hệ thống lớn, khi mà có hàng trăm, hàng nghìn các class và phương thức khác nhau.
Giải pháp: Khi xây dựng một hệ thống, ta cần phải xác định được đâu là những class và phương thức không cho phép kế thừa và Override, để đảm bảo không bị mất dữ liệu do các class khác gây ra.

Để thực hiện được giải pháp trên, trong PHP có hỗ trợ chúng ta cơ chế chống Kế thừa và chống Override thông qua từ khóa Final.
Bây giờ, chúng ta sẽ đi tìm hiểu rõ hơn về Final và cách sử dụng nó trong PHP như thế nào.

Chống kế thừa với Final.
Khi muốn tước quyền kế thừa cho một class, Ta đặt từ khóa Final trước class đó như sau:


php co ban, hoc php, ngon ngu php, php tips, code php


Lúc này, sẽ không có bất kỳ một class nào được kế thừa từ class sinhvien. Hay nói cách khác, nếu chúng ta sử dụng một class khác để extends từ class sinhvien chương trình của chúng ta sẽ báo lỗi.

Chống Override với Final
Khi muốn một phương thức không được Orverride từ các phương thức của class khác. Ta đặt từ khoá Final trước tên phương thức đó như sau:


php co ban, hoc php, ngon ngu php, php tips, code php


Các bạn thấy, phương thức getName() của class hocsinh đang Orverride phương thức getName()của class person. Tuy nhiên, phương thức getName() của class person đã được chống kế thừa bởi từ khóa Final. Nên chương trình của chúng ta sẽ xảy ra lỗi.
Để hiểu rõ hơn, các bạn có thể download source code về chạy trên máy của mình

 HỖ TRỢ TRỰC TUYẾN