欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

php final 屬性

PHP中,final關(guān)鍵字可以用來修飾類、方法和屬性。當(dāng)一個(gè)類被final修飾時(shí),該類就不能被繼承;當(dāng)一個(gè)方法被final修飾時(shí),該方法就不能被重寫;當(dāng)一個(gè)屬性被final修飾時(shí),該屬性的值就不能被更改。在本文中,我們將重點(diǎn)討論final屬性的用法和注意事項(xiàng)。 作為一個(gè)常量,final屬性在定義時(shí)必須賦初始值。定義一個(gè)final屬性的語法如下所示:
class Person {
final public $name = '張三';
}
在上述代碼中,$name屬性被final修飾,其值為'張三'。一旦定義后,該屬性的值就不能被更改。例如:
$obj = new Person();
$obj->name = '李四'; // 報(bào)錯(cuò):Can't modify final property 'Person::$name'
上述代碼中,$name屬性的值不能被更改,所以$obj->name = '李四';語句會(huì)報(bào)錯(cuò)。 需要注意的是,final屬性只能在構(gòu)造函數(shù)內(nèi)進(jìn)行初始化,不能在對(duì)象的方法中賦值。例如:
class Person {
final public $name;
public function __construct($name) {
$this->name = $name;
}
public function setName($newName) {
$this->name = $newName; // 報(bào)錯(cuò):Cannot assign to final property (Person::$name)
}
}
在上述代碼中,$name屬性被final修飾,其值不能在setName()方法中重新賦值。如果強(qiáng)制賦值會(huì)導(dǎo)致報(bào)錯(cuò),因?yàn)椴荒苄薷膄inal屬性的值。 需要注意的是,final屬性的值可以是復(fù)雜的表達(dá)式。例如:
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表示對(duì)象屬性。這種語法的好處是可以根據(jù)不同的對(duì)象來計(jì)算final屬性的值。 需要注意的是,final屬性只能在類內(nèi)部賦值,并且不能被子類繼承。例如:
final class Person {
final public $name = '張三';
}
class Man extends Person {
public function __construct() {
parent::__construct();
$this->name = '李四'; // 報(bào)錯(cuò):Cannot override final property (Person::$name)
}
}
在上述代碼中,$name屬性被final修飾,在子類中不能被繼承,也不能被重寫。如果強(qiáng)制賦值會(huì)導(dǎo)致報(bào)錯(cuò)。 總之,final屬性是一種常量屬性,其值在定義時(shí)必須賦初始值,且不能在對(duì)象的方法中重新賦值。定義final屬性的好處是可以限定屬性的取值范圍,避免屬性值被篡改。需要注意的是,final屬性只能在類內(nèi)部賦值,并且不能被子類繼承。