1. 程式人生 > >php——19-關鍵詞 final

php——19-關鍵詞 final

如果我們不希望一個類被繼承、不希望一個類的方法能被重寫,我們使用 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();//報錯