我學習PHP類和對象,但這些代碼混淆了我:爲什麼是php程序的輸出?
<?php
class A
{
public function test()
{
//output will be A load(), why?
self::load();
//output will be B load(), why?
$this->load();
}
public function load()
{
echo "A load()";
}
}
class B extends A
{
public function test()
{
parent::test();
}
public function load()
{
echo "B load()";
}
}
$c = new B();
$c->test();
在這些情況下,爲什麼self::load()
和$this->load()
得到不同的輸出?
請詳細描述。
的可能的複製[何時使用自超過$嗎?(HTTP:/ /stackoverflow.com/questions/151969/when-to-use-self-over-this) – mitkosoft
因爲'self :: load()'引用了__class的'load()'方法,其中方法在繼承中被調用___樹;而'$ this-> load()'引用__instance__的load方法,並且通過繼承'''''load''方法覆蓋實例的'''load()'方法 –