Từ khóa cuối cùng được giới thiệu bởi PHP5 liên quan đến khái niệm lập trình hướng đối tượng.
Nhưng trước khi chúng ta chuyển sang trận chung kết, chúng ta cần đảm bảo rằng chúng ta có một sự hiểu biết tốt về khái niệm thừa kế. Trong kế thừa, chúng ta có thể thừa hưởng một lớp từ một lớp khác. Ngoài ra, chúng ta có thể ghi đè một hàm trong một lớp kế thừa, để thay thế hành vi ban đầu được cung cấp. Trong một số trường hợp, chúng ta có thể cần giữ một lớp không được kế thừa hoặc chúng ta có thể cần phải ngăn chặn một chức năng bị ghi đè. Điều này có thể đạt được với lần cuối cùng, bằng cách tiền tố lớp và chức năng với từ khóa cuối cùng. Về cơ bản khiến PHP tạo ra một lỗi trong trường hợp mọi người cố gắng mở rộng một lớp cuối cùng hoặc ghi đè chức năng cuối cùng.
Note:
Chúng ta chỉ có thể sử dụng từ khóa cuối cùng với các phương thức và lớp.
Hãy trình bày khái niệm với sự trợ giúp của các ví dụ dưới đây.
Example:
Chúng tôi không thể ghi đè chức năng lớp cha.
<?php class BaseClass{ final function calculate($val1,$val2){ $sum = $val1+$val2; echo "Sum of given no=".$sum; } } class ChildClass extends BaseClass{ function calculate($x,$y){ $mult=$val1*$val2; echo "Multiplication of given no=".$mult; } } $obj= new ChildClass(); $obj->show(10,10); ?>Output:
PHP Fatal error: Cannot override final method BaseClass::calculate()Explanation:
Trong ví dụ trên, lớp Baseclass là lớp cha. Trong đó phương pháp tính toán được đánh dấu là cuối cùng. Nó ngụ ý rằng chúng ta không thể ghi đè phương thức hiển thị trong bất kỳ lớp con nào của nó. Để xác định lỗi & nbsp; ChildClass đang cố gắng xác định phương thức cuối cùng hiển thị (). Điều này sẽ tạo ra một lỗi nghiêm trọng, nó ngụ ý rằng phương pháp cuối cùng của lớp cha không thể được xác định trong lớp con của nó.
Example:
Sử dụng từ khóa "cuối cùng" trước lớp
<?php final Class BaseClass{ function printData($val1,$val2){ $add=$val1+$val2; echo "Sum of given no=".$s; } } class Child extends BaseClass{ function printData($val1,$val2){ $m=$val1*$val2; echo "Multiplication of given no=".$m; } } $obj= new Child(); $obj->printData(20,20); ?>Output:
PHP Fatal error: Class Child may not inherit from final class (BaseClass)Explanation:
Trong ví dụ trên Baseclass định nghĩa với trận chung kết, kết quả đó chúng tôi không thể mở rộng lớp này. Khi trẻ em cố gắng mở rộng từ Baseclass (ngụ ý trẻ em là lớp con của Baseclass). Đối với tình huống này, PHP đã ném một thông báo lỗi, lớp trẻ em không thể được thừa hưởng từ lớp cuối cùng (Baseclass).
Cập nhật vào ngày 30 tháng 3 năm 2019 22:30:26
- Câu hỏi và câu trả lời liên quan
- Từ khóa cuối cùng của PHP
- Lớp cuối cùng trong Java
- Từ khóa cuối cùng trong PHP
- Mô phỏng lớp cuối cùng trong C ++
- Tại sao lớp cuối cùng được sử dụng trong Java?
- Thực hiện một lớp học cuối cùng ở Java
- Phương pháp cuối cùng có được kế thừa trong Java không?
- Một lớp học trong Java có thể là cả cuối cùng và trừu tượng?
- Một lớp cuối cùng có thể được phân lớp trong Java?
- Phương pháp cuối cùng trong Java là gì?
- Cuối cùng, cuối cùng và hoàn thiện trong C#
- Phương pháp riêng và cuối cùng trong C#
- Cuối cùng, cuối cùng và hoàn thiện trong Java
- Một phương thức lớp bên trong cục bộ có thể truy cập các biến cuối cùng cục bộ trong Java không?
- Tại sao lớp chuỗi là bất biến hoặc cuối cùng trong Java?
Định nghĩa của lớp cuối cùng PHP
Php Final Class là một lớp ngăn chặn việc ghi đè một phương pháp của các lớp con chỉ bằng tiền tố cuối cùng với định nghĩa. Điều đó có nghĩa là nếu chúng ta xác định một phương thức với tiền tố cuối cùng thì nó sẽ ngăn chặn việc ghi đè phương thức. Thông thường, sự kế thừa của khái niệm PHP OOPS sẽ cho phép sự linh hoạt to lớn trong hệ thống phân cấp lớp. Bạn có thể tạo một hoặc nhiều lớp con được sử dụng để mở rộng chức năng lớp cơ sở, nhưng khái niệm OOPS về PHP đưa ra một cách để tạo các lớp không thể mở rộng. Các lớp/lớp như vậy được/được gọi là lớp cuối cùng/lớp cuối cùng.
Syntax:
final class Pavan{ }final public function set_bike(){}Php Final Class hoạt động như thế nào?
Php Final Class hoạt động dựa trên khai báo chỉ bằng cách thêm từ khóa cuối cùng trước từ lớp. Lớp cuối cùng hoạt động mà không mở rộng lớp học. Lớp con có thể ghi đè các phương pháp cuối cùng. Các biến lớp bình thường không thể được sử dụng để khai báo là cuối cùng. Lớp cuối cùng PHP hoặc phương pháp có thể được mở rộng giống như các lớp bình thường khác. Nếu lớp cuối cùng được mở rộng bằng cách sử dụng bất kỳ lớp bình thường nào khác thì lớp cuối cùng sẽ khiến PHP trả về lỗi nghiêm trọng trong đầu ra của trình duyệt. Tương tự như vậy, phương pháp cuối cùng cũng vậy.
Ví dụ về lớp cuối cùng của PHP
Sau đây là các ví dụ được đưa ra dưới đây:
Ví dụ 1
Ở đây một lớp được tạo bằng cách sử dụng từ khóa cuối cùng trước lớp. Lớp cuối cùng này có thể mở rộng lớp học này. Bên trong lớp cuối cùng, các phương thức/chức năng cuối cùng được tạo ra. Sau đó, lớp bình thường BMWCAR1, được tạo bằng phương thức/hàm và sau đó tạo phương thức/hàm cuối cùng bên trong các thẻ đoạn văn. Sau đó, một lớp học Tata1, được tạo ra để mở rộng BMWCAR1, có hàm/phương thức bình thường Hiển thị (), nhưng phương thức giá () không được tạo trong lớp Tata1 vì gọi nó sẽ cung cấp lỗi nghiêm trọng vì từ khóa cuối cùng . Nó là không thể mở rộng. Sau đó, đối tượng $ bmwcar1 của người Viking được tạo/tạo. Các phương thức gọi () và phương thức cuối cùng Giá () được thực hiện từ lớp BMWCAR1 và lớp Tata1.
Code:
<?php final class Automobile1{ final public function set_color1(){ } final public function show1(){ } } class Bmwcar1{ public function display1(){ echo "This is the bmwcar1 class \n";} final public function price1(){echo "This is the bmwcar1 class's final price method \n";} } class Tata1 extends Bmwcar1{ public function display1(){ echo "This is tata1 class \n";} } $bmwcar1 = new Bmwcar1(); $tata1 = new Tata1(); $bmwcar1->display1(); $bmwcar1->price1(); $tata1->display1(); $tata1->price1(); ?>Output:
Ví dụ #2
Ở đây, lớp A1 A1 được tạo với từ khóa cuối cùng. Sau đó, hàm bình thường, show show1 () được tạo với hai biến. Bên trong của nó tổng của các biến sẽ được lưu trữ trong biến $ sum1. Sau đó, hàm Echo được sử dụng để in tổng giá trị biến. Sau đó, lớp B1 B1 được tạo ra để mở rộng lớp A1 A1. Bên trong phép nhân lớp B1 B1 của các biến được thực hiện và lưu trong biến $ multi1. Kết quả nhân được in bằng cách sử dụng chức năng Echo nhưng ở đây chúng tôi đang mở rộng lớp cuối cùng là A1 A1 với lớp bình thường. Ở đây chúng tôi mở rộng lớp/phương pháp cuối cùng. Nó trả về lỗi nghiêm trọng vì chúng tôi mở rộng một lớp cuối cùng.
Code:
<?php final Class A1 { function show1($x1,$y1) { $sum1=$x1+$y1; echo "Sum of the given no.s = ".$sum1; } } class B1 extends A1 { function show($x1,$y1) { $multi1=$x1*$y1; echo "The Multiplication of the given no.s = ".$multi1; } } $obj1= new B1(); $obj1->show1(1001,1001); ?>Output:
Ví dụ #3
Ở đây, một lớp bình thường, C1 C1 với chức năng E ($ xx1) được tạo ra sau đó một lớp D1 D1 được tạo ra để mở rộng lớp C1 C1 để sử dụng các tham số của C1 C1. Vì vậy, lớp D1 D1 sẽ kế thừa các thuộc tính lớp của C1 C1 và cũng sẽ chứa các thuộc tính của lớp D1 D1. Cho đến đây mọi thứ đều đúng. Sau đó, một lớp A1 A1 được tạo ra với chức năng/phương thức cuối cùng bên trong nó với các biến của X1 X1, các biến của Y1, tính toán tổng của các biến. Sau khi lớp B1 B1 này được tạo ra để mở rộng lớp A1 A1. Nhưng các lớp cuối cùng, các phương pháp là không thể mở rộng. Nếu đã cố gắng gây ra lỗi nghiêm trọng sẽ xảy ra.
Code:
<?php class C1 { function e($xx1){ echo 'The value of xx1 variable value'.$xx1; } } class D1 extends C1 { function e($xx1){ $f=2*$xx1; echo 'The double value of f (xx1)'.$f; } } class A1 { final function show($x1,$y1) { $sum1=$x1+$y1; echo "Sum of given no=".$sum1; } } class B1 extends A1 { function show($x1,$y1) { $mult1=$x1*$y1; echo "Multiplication of given no=".$mult1; } } $obj=new D1(); $obj->e(13); $obj= new B1(); $obj->show(100,100); ?>Output:
Ví dụ #4
Trong ví dụ dưới đây, một lớp bình thường được tạo lúc đầu và sau đó một phương thức cuối cùng được tạo bên trong nó với hai biến để tính tổng của hai giá trị biến thì một phương thức/hàm mới được tạo bên trong lớp bình thường Để nhân hai giá trị biến và trả về kết quả. Ở đây chỉ có một phương thức cuối cùng được tạo và được gọi mà không cần mở rộng để sẽ không có lỗi/lỗi. Tổng của các biến và cả phép nhân của các biến sẽ được in.
Code:
<?php class BaseClassone{ final function calculateone($val11,$val12){ $sum1 = $val11+$val12; echo "Sum of the given nums = ".$sum1; } function showone($x1,$y1){ $multip1=$x1*$y1; echo "Multiplication of the given nums = ".$multip1."\n"; } } $obj= new BaseClassone(); $obj->showone(12,12); $obj->calculateone(10,10); ?>Output:
Thuận lợi
Khái niệm lớp cuối cùng PHP là duy nhất và không thể mở rộng như các lớp bình thường. Giống như các lớp cuối cùng, các phương pháp cuối cùng cũng không thể mở rộng theo một cách duy nhất. Khái niệm lớp cuối cùng của PHP sẽ ngăn chặn chức năng kế thừa lớn và cũng khuyến khích thành phần. Tất cả các API công khai của lớp cuối cùng là/là một phần của giao diện/giao diện. Nó giúp đóng gói. Lớp/Phương thức cuối cùng sẽ ngăn lớp/Phương thức ghi đè các lớp/phương thức con. Các lớp/lớp cuối cùng của PHP sẽ ngăn ngừa khai thác. Mặc dù các lớp/lớp cuối cùng có thể được mở rộng nhưng các lớp cuối cùng này có thể mở rộng ở một số điều kiện. Nó giống như lớp cuối cùng trở thành hoặc có thể trở thành một lớp con nhưng nó có thể được biến thành một siêu lớp.
Từ khóa cuối cùng của PHP thậm chí có thể được đặt ngay trước hoặc ngay sau khi xác định chỉ định truy cập. Phương pháp/Phương thức cuối cùng của PHP cũng không có loại/loại trả về cụ thể/được chỉ định và tên/tên phương thức.
Bài viết đề xuất
Đây là một hướng dẫn cho lớp cuối cùng PHP. Ở đây chúng tôi thảo luận về định nghĩa và hoạt động của lớp cuối cùng của PHP cùng với các ví dụ khác nhau và việc triển khai mã của nó. Bạn cũng có thể xem các bài viết sau để tìm hiểu thêm -
- Tài liệu tham khảo PHP
- Lỗi nhật ký PHP
- Tìm kiếm mảng PHP
- Lớp học trừu tượng trong PHP