> 백엔드 개발 > PHP 튜토리얼 > 深入分析PHP final关键字使用技巧_PHP教程

深入分析PHP final关键字使用技巧_PHP教程

WBOY
풀어 주다: 2016-07-15 13:33:43
원래의
800명이 탐색했습니다.

PHP程序员们在掌握了

在PHP中类的继承是使用最多的一个编程特性,我们可以创建一个基类(父类)然后在这其中定义一些基本的方法,在我们的子类我们可以扩展父类中的方法这就叫覆盖,但是如果说你在父类的某些很关键的方法你不能被子类继承,因为如果子类继承了这个方法可能给程序带来一定的麻烦,所以我们希望这个方法是“私有”的,是不能被扩展的,这在PHP使用了final关键字来修饰你要不被继承的方法。

PHP final关键字可以修饰类同样可以修改类中的方法,但它们的作用是差不多的,即如果你使用了final关键字来修饰了,那么这个被修饰的类或者方法将不能被扩展或者继承。你只能老老实实去引用它。如果你在类前面使用了final,这就是说明这个类不能使用继承;如果你在方法前使用了PHP final关键字,这就是说明这个方法不能被覆盖。道理就是这么简单,让我们也看个简单的示例吧。

<ol class="dp-xml">
<li class="alt"><span class="tag"> ?PHP   </span></li>
<li><span>final class BaseClass {   </span></li>
<li class="alt"><span>public function test() {   </span></li>
<li><span>echo "BaseClass::test() calledn";   </span></li>
<li class="alt"><span>}   </span></li>
<li><span>final public function moreTesting() {   </span></li>
<li class="alt"><span>echo "BaseClass::moreTesting() calledn";   </span></li>
<li><span>}   </span></li>
<li class="alt"><span>}   </span></li>
<li><span>class ChildClass extends BaseClass {   </span></li>
<li class="alt"><span>public function moreTesting() {   </span></li>
<li><span>echo "ChildClass::moreTesting() calledn";   </span></li>
<li class="alt"><span>}   </span></li>
<li><span>}   </span></li>
<li class="alt"><span>// Results in Fatal error: Cannot override final method BaseClass::moreTesting()   </span></li>
<li>
<span class="tag">?></span><span>  </span>
</li>
</ol>
로그인 후 복사

这个例子中,我们在类前和方法前都加了PHP final关键字来修饰我们具体的类,当然这个类是不能按要求来输出的,你可以自己动手调试下,基本的原理就这样了,我们只要记住如果类或者方法使用了final那么这就意味着类不能被继承或者子类不能覆盖父类的方法。


www.bkjia.comtruehttp://www.bkjia.com/PHPjc/446025.htmlTechArticlePHP程序员们在掌握了 在PHP中类的继承是使用最多的一个编程特性,我们可以创建一个基类(父类)然后在这其中定义一些基本的方法,在我...
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿