思考:继承是利用了一些共性以及共性大小来拆分的父类和子类,父类的目的是为了给子类提供一些共性代码,子类可以从父类继承,而且还可以有子类无限继承子类,
继承的目的一是利用父类提供的公共代码,二是实现自身需求的扩展,如果子类无线被继承会有什么后果呢?
引入:事务的划分首先不可能无限细化,因此肯定是不需要无线的出现子类的,一旦无线出现子类,那么就会导致代码的执行效率大大降低,而且可能被某些无关类
继承从而出现安全问题,但是从代码设计的角度来讲是无法显示开发者的,因此php提供了一种终结机制,让类无法被继承
最终类final【掌握】
定义:最终类,使用final关键字修饰类名,表示此类不可以继承。
1.基础语法 final class posen{}
<?php final class posen{ } ?>
2.最终类无法被继承 运行提示错误
<?php final class posen{ public $name=332; } class man extends posen{ //运行后 致命的错误,无法从final类继承 } ?>
3.final关键字不知修饰类表示类不可被继承,还能修饰方法,表示方法不能不被重写
<?php class posen{ public $name=332; public final function show(){ //最终方法 echo __CLASS__; } } class man extends posen{ //运行后 致命的错误,无法从final类继承 public function show(){ echo "我能重写这个方法吗?"; } } $s=new man(); $s->show(); //错误不能重写final的方法 致命的错误 ?>
总结:
final关键字修饰的类表示无法被继承
final关键字还可以修饰方法,表示方法不能被子类重写(通常类不会使用final关键字)
fnal修饰类包实不希望类在出现子类,可以很好保护类的内部结构不被暴露
final修饰方法表示不希望方法被修改,可以在一个更高的维度来保证同类事务的共同表现