Computer >> 컴퓨터 >  >> 프로그램 작성 >> PHP

PHP의 final 클래스와 final 메소드를 설명합니다.

<시간/>

마지막 키워드는 객체 지향 프로그래밍 개념과 관련된 PHP5에서 도입되었습니다.

그러나 마지막으로 넘어가기 전에 상속 개념을 잘 이해하고 있는지 확인해야 합니다. 상속에서는 다른 클래스에서 클래스를 상속할 수 있습니다. 또한 원래 제공된 동작을 대체하기 위해 상속된 클래스의 함수를 재정의할 수 있습니다. 어떤 경우에는 클래스가 상속되지 않도록 해야 하거나 함수가 재정의되는 것을 방지해야 할 수도 있습니다. 이것은 final 키워드로 클래스와 함수에 접두사를 붙임으로써 달성할 수 있습니다. 이는 본질적으로 누군가가 최종 클래스를 확장하거나 최종 함수를 재정의하려고 시도하는 경우 PHP에서 오류를 생성하게 합니다.

참고:

메서드와 클래스에는 final 키워드만 사용할 수 있습니다.

아래의 예시를 통해 개념을 보여드리겠습니다.

예:

상위 클래스 함수를 재정의할 수 없습니다.

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

출력:

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

설명:

위의 예에서 부모 클래스인 BaseClass 클래스. 계산 방법이 최종으로 표시되는 경우. 이는 자식 클래스에서 show 메서드를 재정의할 수 없음을 의미합니다. 오류를 식별하려면 ChildClass가 최종 메서드를 정의하려고 하는 표시()를 표시합니다. 이것은 치명적인 오류를 생성합니다. 이는 상위 클래스의 최종 메소드가 하위 클래스에서 정의될 수 없음을 의미합니다.

예:

수업 전 "Final" 키워드 활용

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

출력:

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

설명:

위의 예제에서 BaseClass 클래스는 최종으로 정의하므로 결과적으로 이 클래스를 확장할 수 없습니다. Child 클래스가 BaseClass에서 확장을 시도할 때(Child가 BaseClass의 자식 클래스임을 의미함). 이 상황에서 PHP는 "Class Child는 최종 클래스(BaseClass)에서 상속되지 않을 수 있습니다"라는 오류 메시지를 표시합니다. 이는 BaseClass의 자식 클래스 생성을 허용하지 않는다는 것을 의미합니다.