php——19-關鍵詞 final
阿新 • • 發佈:2018-12-13
如果我們不希望一個類被繼承、不希望一個類的方法能被重寫,我們使用 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();//報錯