首页 > 技术分享 > 原生PHP
收藏

PHP中final关键字,最终类和最终方法

05/14 21:18
大潇博客 原创文章,转载请标明出处

如果我们希望某个类不被其它类继承,比如因为安全考虑,可以使用final


简单举例:

final class A{ }

class B extends A{ }  //不可以


如果我们希望某个方法,假设比较重要的方法,不能被子类改写,可以使用final来修饰方法

比如:

class A{

    final public function getCode($salary){

        return $salary*3;

    }

}

class B extends A{

    //有final存在,不能去覆盖父类的getCode方法

    pulic function getCode($val){

        return $salary*6;

    }

}

$b = new B(100);

echo $b->getCode(); //会报错:Fatal error: Cannot override final method A::getCode() in..

上面的例子中,如果getCode方法没有声明final,则getCode方法会被继承的B类重写,输出600

但如果方法前面有final关键字,已被声明为最终方法,则继承的子类重写此方法时,会报错

final重写报错.png


final关键字使用场景:
⑴. 处于安全考虑,类的某个方法不允许修改

⑵. 不希望某个类被其它的类继承


注意:final关键字不能去修饰属性(变量)


打赏

阅读排行

大家都在搜

博客维护不易,感谢你的肯定
扫码打赏,建议金额1-10元
  • 15601023311