Computer >> Máy Tính >  >> Lập trình >> PHP

Giải thích lớp cuối cùng và phương thức cuối cùng trong PHP.

Từ khóa cuối cùng được PHP5 giới thiệu liên quan đến khái niệm lập trình hướng đối tượng.

Nhưng trước khi bước vào trận chung kết, chúng ta cần đảm bảo rằng chúng ta đã hiểu rõ về khái niệm thừa kế. Trong kế thừa, chúng ta có thể kế thừa 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 được cung cấp ban đầu. Trong một số trường hợp, chúng tôi có thể cần giữ cho một lớp không được kế thừa từ đó hoặc chúng tôi có thể cần ngăn một hàm bị ghi đè. Điều này có thể đạt được với cuối cùng, bằng cách đặt trước lớp và hàm bằng từ khóa cuối cùng. Điều này về cơ bản khiến PHP tạo ra lỗi trong trường hợp ai đó cố gắng mở rộng lớp cuối cùng hoặc ghi đè hàm cuối cùng.

Lưu ý:

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 chứng minh khái niệm này với sự trợ giúp của các ví dụ dưới đây.

Ví dụ:

Chúng tôi không thể ghi đè hàm 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);
?>

Đầu ra:

PHP Fatal error: Cannot override final method BaseClass::calculate()

Giải thích:

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 show trong bất kỳ lớp con nào của nó. Để xác định lỗi ChildClass đang cố gắng xác định phương thức cuối cùng show (). Điều này sẽ tạo ra một lỗi nghiêm trọng, nó ngụ ý rằng phương thức cuối cùng của lớp cha không thể được xác định trong lớp con của nó.

Ví dụ:

Sử dụng từ khóa "Final" Before The Class

<?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);
?>

Đầu ra:

PHP Fatal error: Class Child may not inherit from final class (BaseClass)

Giải thích:

Trong ví dụ trên, lớp BaseClass định nghĩa với cuối cùng, kết quả đó chúng ta không thể mở rộng lớp này. Khi lớp Child cố gắng mở rộng từ BaseClass (có nghĩa là Child là lớp con của BaseClass). Đối với trường hợp này, PHP đưa ra thông báo lỗi “Lớp con có thể không kế thừa từ lớp cuối cùng (BaseClass)”. Điều đó ngụ ý rằng nó sẽ không cho phép tạo bất kỳ lớp con nào của BaseClass.