您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關 extends類繼承如何在PHP中使用,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
Final 關鍵字
PHP 5新增的一個關鍵字,如果父類中的方法被聲明為 final,則子類無法覆蓋該方法。同樣如果一個類被聲明為 final,則不能被繼承。
需要注意的是: 屬性不能被定義為 final,只有類和方法才能被定義為 final。
范圍解析操作符(::)
范圍解析操作符或者更簡單地說是一對冒號,可以用于訪問靜態成員,類常量,還可以用于覆蓋類中的屬性和方法。
self,parent 和 static 這三個特殊的關鍵字是用于在類定義的內部對其屬性或方法進行訪問的。
當一個子類覆蓋其父類中的方法時,PHP 不會調用父類中已被覆蓋的方法。是否調用父類的方法取決于子類。這種機制也作用于構造函數和析構函數,重載以及魔術方法。
下面是調用父類的方法的一個示例:
復制代碼 代碼如下:
<?php
class MyClass
{
protected function myFunc() {
echo "MyClass::myFunc()\n";
}
}
class OtherClass extends MyClass
{
// 覆蓋了父類的定義
public function myFunc()
{
// 但還是可以調用父類中被覆蓋的方法
parent::myFunc();
echo "OtherClass::myFunc()\n";
}
}
$class = new OtherClass();
$class->myFunc();
/**
* 輸出結果 ->
* MyClass::myFunc()
* OtherClass::myFunc()
*/
?>
當在類定義之外引用到這些項目時,要使用類名。
::class 自 PHP 5.5 起,關鍵詞 class 也可用于類名的解析。使用 ClassName::class 你可以獲取一個字符串,包含了類 ClassName 的完全限定名稱。這對使用了 命名空間 的類尤其有用。這些可能就是以后要討論的話題了,關于這個概念那就是以后要討論的了,現在我們還在使用php5.3。
不過說句實話,有一些關鍵字在小項目中確實是很難使用,不過我想多了解一些總還是需要的。尤其是當你使用一些第三方的類庫時候,當你細細研究他的程序邏輯,你總能學點東西。盡管有些東西你長時間不用,可能就忘記了,但是畢竟他曾經在你腦海里經過過,總會為以后的人生留點痕跡。
最后廢話不多說了,分享一段范圍解析操作符(::)應用的代碼,你們也來感受下:
復制代碼 代碼如下:
<?php
class cA
{
/**
* 直接使用的測試屬性的默認值
*/
protected static $item = 'Foo';
/**
* 間接使用的測試屬性的默認值
*/
protected static $other = 'cA';
public static function method()
{
print self::$item."\r\n";
print self::$other."\r\n";
}
public static function setOther($val)
{
self::$other = $val;
}
}
class cB extends cA
{
/**
* 重定義測試屬性的默認值
*/
protected static $item = 'Bar';
public static function setOther($val)
{
self::$other = $val;
}
/**
* 不重新聲明 method()方法
*/
}
class cC extends cA
{
/**
* 重定義測試屬性的默認值
*/
protected static $item = 'Tango';
public static function method()
{
print self::$item."\r\n";
print self::$other."\r\n";
}
/**
* 不重新聲明 setOther()方法
*/
}
class cD extends cA
{
/**
* 重定義測試屬性的默認值
*/
protected static $item = 'Foxtrot';
/**
* 不重新聲明 任何方法來實現上述過程
*/
}
cB::setOther('cB'); // cB::method()!
cB::method(); // cA::method()!
cC::setOther('cC'); // cA::method()!
cC::method(); // cC::method()!
cD::setOther('cD'); // cA::method()!
cD::method(); // cA::method()!
/**
* 輸出結果 ->
* Foo
* cB
* Tango
* cC
* Foo
* cD
*/
?>
PHP extends類繼承代碼示例:
復制代碼 代碼如下:
< ?php
class a{
public $x;
public $y;
function __construct($x=0,$y=0){
$this->x=$x;
$this->y=$y;
}
function getx(){
return $this->x;
}
function gety(){
return $this->y;
}
function __destruct(){}
}
class a2 extends a{}
/*extends是一個繼承函數*/
$b2=new a2(10,10);
echo $b2->getx()."<br>";
echo $b2->gety();
?>
以上就是 extends類繼承如何在PHP中使用,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。