看例子6.10. 这段代码输出” hey! i am son.” 因为当php调用getsalutation, 是一个son的实例,是将father中的salutation覆写而来. 如果salutation是public的,php将产生相同的结果. 覆写方法的操作很类似。在son中,对于identify的调用绑定到那个方法。
private成员只存在于它们所在的类内部. 不像public和protected成员那样,php模拟静态绑定. 看例子6.11。它输出”hello there! i am father.”,尽管子类覆写了salutation的值,脚本将this->salutation和当前类father绑定. 类似的原则应用于private方法identify()。
listing 6.11 binding and private members
class father { private $salutation = "hello there!";
public function getsalutation() { print("$this->salutationn"); $this->identify(); }
private function identify() { print("i am father. n"); } }
class son extends father { private $salutation = "hey!"; private function identify() { print("i am son. n"); } }
$obj = new son(); $obj->getsalutation(); //输出hello there! i am father. ?>