色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

php final 屬性

錢浩然1年前8瀏覽0評論
PHP中,final關鍵字可以用來修飾類、方法和屬性。當一個類被final修飾時,該類就不能被繼承;當一個方法被final修飾時,該方法就不能被重寫;當一個屬性被final修飾時,該屬性的值就不能被更改。在本文中,我們將重點討論final屬性的用法和注意事項。 作為一個常量,final屬性在定義時必須賦初始值。定義一個final屬性的語法如下所示:
class Person {
final public $name = '張三';
}
在上述代碼中,$name屬性被final修飾,其值為'張三'。一旦定義后,該屬性的值就不能被更改。例如:
$obj = new Person();
$obj->name = '李四'; // 報錯:Can't modify final property 'Person::$name'
上述代碼中,$name屬性的值不能被更改,所以$obj->name = '李四';語句會報錯。 需要注意的是,final屬性只能在構造函數內進行初始化,不能在對象的方法中賦值。例如:
class Person {
final public $name;
public function __construct($name) {
$this->name = $name;
}
public function setName($newName) {
$this->name = $newName; // 報錯:Cannot assign to final property (Person::$name)
}
}
在上述代碼中,$name屬性被final修飾,其值不能在setName()方法中重新賦值。如果強制賦值會導致報錯,因為不能修改final屬性的值。 需要注意的是,final屬性的值可以是復雜的表達式。例如:
class Math {
const PI = 3.14159;
final public $circleArea = self::PI * $this->radius;
public function __construct($radius) {
$this->radius = $radius;
}
}
在上述代碼中,$circleArea屬性的值為self::PI * $this->radius,其中self::PI表示類常量,$this->radius表示對象屬性。這種語法的好處是可以根據不同的對象來計算final屬性的值。 需要注意的是,final屬性只能在類內部賦值,并且不能被子類繼承。例如:
final class Person {
final public $name = '張三';
}
class Man extends Person {
public function __construct() {
parent::__construct();
$this->name = '李四'; // 報錯:Cannot override final property (Person::$name)
}
}
在上述代碼中,$name屬性被final修飾,在子類中不能被繼承,也不能被重寫。如果強制賦值會導致報錯。 總之,final屬性是一種常量屬性,其值在定義時必須賦初始值,且不能在對象的方法中重新賦值。定義final屬性的好處是可以限定屬性的取值范圍,避免屬性值被篡改。需要注意的是,final屬性只能在類內部賦值,并且不能被子類繼承。