php——19-关键词 final

版权声明:未经同意,不得随意转载转载 https://blog.csdn.net/lucky541788/article/details/82949810

如果我们不希望一个类被继承、不希望一个类的方法能被重写,我们使用 final 来修饰这个类。
在php中,final 可以修饰类,也可以修饰类的方法,但是不能修饰属性

<?php

final class Father
{
    public $name = 'john';
}

class Son extends Father
{
    public function __construct()
    {
        echo 'My name is ' . $this->name;
    }
}

$cc = new Son();//报错

如果希望(或者保护)类内的内容不被修改和继承,就是固有的引用,请用final

final class Math
{
    public static $PI = 3.14;

    public static function Add($a = 1, $b = 2)
    {
        return $a + $b;
    }
}

echo Math::$PI . '<br>';//3.14
echo Math::Add(10, 30) . '<br>';//40

使用 final ,则子类无法重写父类方法
注意:final 不可以修饰属性

class Person
{
    public $age = 18;
    final public $name='john';//出错


    final public function getAge()
    {
        return $this->age;
    }
}

class Stu extends Person
{
    //使用 final ,则子类无法重写父类方法
    //注意:final 不可以修饰属性
    public function getAge()//出错
    {
        //return parent::getAge(); // TODO: Change the autogenerated stub
        return $this->age + 2;
    }
}

$cc = new Stu();
echo $cc->getAge();//报错

猜你喜欢

转载自blog.csdn.net/lucky541788/article/details/82949810