版权声明:未经同意,不得随意转载转载 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();//报错