php 后知后觉
2021-06-27 03:04
标签:动态调用 return extend 例子 obj object 看到了 继承 highlight 1.$this :动态调用,指当前对象 通过一个例子,说明一下我当时的心理历程: 这是父类,里面有两个方法, 我看到了show调用了msg,msg里面不是没有东西吗?这有什么意思? 是不是**啊? (→_→) 然后再写了他的一个子类: 根据查看的项目里A类的子类,我发现在A的子类里都会重写A类的msg()方法,最终调用的还是子类自己的方法。 产生这个问题的原因就是 我没理解 $this 的 真正意义。 通过上面的输出,在页面上可以看到结果:这是子类的输出。 在A类的show方法里 var_dump($this); 结果是: object(B)#1 (0) { } 也就是说 实例化B 调用show方法,根据继承关系 会找到A类里的show 方法, $this是动态调用,$this指当前对象,这个时候的当前对象不一定就是A类的实例化对象啊,这时候的$this 是B类的实例化对象。 然后$this->msg();就等于是B类的实例化对象调用自己的msg方法。 如果A类里show 方法这样写 echo A::msg(); 那么就是写死的调用,就是调用A类自己的方法。 弄明白了这个,真的觉得自己是菜的难受啊...... \(-_-||)/ 2017-7-10 在菜的道路上,控制不住记几,越走越远...... php 后知后觉 标签:动态调用 return extend 例子 obj object 看到了 继承 highlight 原文地址:http://www.cnblogs.com/benpaodelulu/p/7149161.html/**
* 父类
*/
class A
{
function show()
{
echo $this->msg();
}
function msg(){
return "";
}
}
/**
* A的子类之一
*/
class B extends A
{
function msg()
{
return "this is child";
}
}
$b_obj=new B;
echo $b_obj->show();
上一篇:PHP常用内置函数记忆(持更)
下一篇:JS实现继承的几种方式(转)