PHP中面向对象之Final关键字详解(代码实例)-php教程

资源魔 29 0

本文指标:

一、理解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

抱歉,评论功能暂时关闭!