本文指标:
一、理解PHP中Final要害字的界说
二、理解PHP中Final要害字的作用
三、理解PHP中Final要害字的应用场景
四、把握PHP中Final要害字的详细完成
仍是依照以前一向的思绪,咱们经过3W1H的形式进行学习,那末起首咱们来理解一下
(一)、理解PHP中Final要害字的界说(What)
假如正在一个类前加final,那末这个类就不克不及被承继,假如正在一个办法前加final,那末这个办法就不克不及被重写
(二)、理解PHP中Final要害字的作用(Why)
作用次要有2点:
一、避免类被承继
二、避免类的办法被重写
(三)、理解PHP中Final要害字的应用场景(Where)
假如心愿一个类不子类,或许一个类的办法不克不及被重写,那末能够思考用final完成
(四)、把握PHP中Final要害字的详细完成(How)
总结:
一、final类的界说格局为: final class 类名{}
二、特地留意,PHP5才有final要害字的概念,PHP5以前是不这个概念的
三、final办法的界说格局为:final public(或许protected) function 办法称号(参数.....){}
四、类一旦被界说成final类,就不克不及被承继,也就是它就不克不及有子类了
五、办法一旦被界说成final办法,就不克不及被子类重写
一切的总结都是理论患上进去的,那末接上去,咱们仍是要逐个证实下,这样才好释怀去用
(五)、详细代码
一、案例一:
理论指标:
一、final类的界说格局为: final class 类名{}
<?php //界说“人”类 final class Human{ public function eat(){ echo "Human 中的eat办法被执行了<br/>"; } } $human = new Human(); $human->eat(); ?>
运转后果为:
Human 中的eat办法被执行了
二、案例二:
理论指标:
一、final办法的界说格局为:final public(或许protected) function 办法称号(参数.....){}
<?php class Human{ final public function eat(){ echo "Human 中的 类型为final的eat办法被执行了<br/>"; } } $human = new Human(); $human->eat(); ?>
运转后果为:
Human 中的 类型为final的eat办法被执行了
三、案例三:
理论指标:
一、类一旦被界说成final类,就不克不及被承继,也就是它就不克不及有子类了
<?php //界说“人”类 final class Human{ public function eat(){ echo "Human 中的 类型为final的eat办法被执行了<br/>"; } } //界说Nba球员类 class NbaPlayer extends Human{ public function eat(){ } } ?>
运转后果为:
Fatal error: Class NbaPlayer may not inherit from final class (Human) in D:\E-class\class-code\classing\index.php on line 14
四、案例四:
理论指标:
一、办法一旦被界说成final办法,就不克不及被子类重写
<?php //界说“人”类 class Human{ final public function eat(){ echo "Human 中的 类型为final的eat办法被执行了<br/>"; } } //界说Nba球员类 class NbaPlayer extends Human{ public function eat(){ echo "NbaPlayer中的eat办法,重写了父类的eat办法<br/>"; } } ?>
运转后果为:
Fatal error: Cannot override final method Human::eat() in D:\E-class\class-code\classing\index.php on line 14
(六)、学致使用
到今朝为止,咱们应该对final有了个明晰的理解,接上去学致使用,用咱们学到的这个常识点来处理以下成绩
成绩:依据多年的经历总结,不少数据的操作办法其实都是能够被复用的,除了了正在一个名目里用,不少名目均可以用,并且一个名目的不少中央均可以复用,以是筹算把这些通用的办法都封装到一个类中,然而这个类没须要有子类,外面的办法我也没有想让它被重写,该怎样做?
思绪剖析:
1.创立一个类,外面蕴含通常的数据操作办法
2.由于没有心愿类被承继,以是连系final的作用,咱们能够把类界说成final类
3.类一旦界说成final类了,外面的办法天然就没有会被重写了,由于不了子类,又怎样能够正在子类中去重写呢
详细代码以下:
<?php final class MyDataOpClass{ public function abs(){ //求相对值 } //孕育发生随机数 public function rand(){ echo "孕育发生随机数办法"; } //猎取数组中的最年夜值 public function getMax($numArr){ } //猎取数组中的最小值 public function getMin($numArr){ } //其余办法就此省略 } $mymath = new MyDataOpClass(); $mymath->rand(); ?>
运转后果以下:
孕育发生随机数办法
阐明:这个例子有点简略,然而心愿各人留意本人的思绪剖析,要尽可能的精确明晰
总结:
一、本文次要解说了final的界说以及作用和详细的完成
心愿本文能给各人带来肯定的协助,谢谢各人!!!
以上就是PHP中面向工具之Final要害字详解(代码实例)的具体内容,更多请存眷资源魔其它相干文章!
标签: php开发教程 php开发资料 php开发自学 面向对象 Final
抱歉,评论功能暂时关闭!