php基礎知識:類與對象(4) 範圍解析操作符(::)

來源:互聯網
上載者:User

範圍解析操作符(也可稱作 Paamayim Nekudotayim)或者更簡單地說是一對冒號,可以用於訪問靜態成員、方法和常量,還可以用於訪問被覆蓋類中的成員和方法。
當在類的外部存取這些靜態成員、方法和常量時,必須使用類的名字。
把 Paamayim Nekudotayim 在希伯萊文就是雙冒號的意思。

在類的外部使用 :: 操作符
class MyClass {
const CONST_VALUE = 'A constant value';
}

echo MyClass::CONST_VALUE;

self 和 parent 這兩個特殊的關鍵字是用於在類的內部對成員或方法進行訪問的。

例子:
class OtherClass extends MyClass
{
public static $my_static = 'static var';

public static function doubleColon() {
echo parent::CONST_VALUE . " n";
echo self::$my_static . " n";
}
}
OtherClass::doubleColon();

當一個子類覆蓋其父類中的方法時,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();

--------------------------------------------------------------------------------
??重點??訪問靜態方法或者成員時一定要使用類名::的方式。
另外就是注意:PHP不會主動調用父類的方法,包括建構函式和解構函式在內。
參見這個文字:http://163xiaofan.blog.163.com/blog/static/1713578020061027101820973

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.