Я учусь Классы и объекты 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()' ссылается на метод 'load()' класса __, где метод называется__ в наследовании дерево; тогда как '$ this-> load()' ссылается на метод загрузки __instance__, а по наследованию метод 'B'' load() 'переопределяет метод' A' 'load()' для экземпляра –