php 有关面向对象继承构造函数初始化的问题

classnode{private$debugmessage;publicfunction__construct(){$this->debugmessage=array(... class node{ private $debugmessage; public function __construct(){ $this ->debugmessage = array(); $this ->debug(__CLASS__); echo '父类有初始化'; } function debug($message){ $this ->debugmessage[] = $message; echo 'debug()没有进么'; } function getnodemessage(){ var_dump($this ->debugmessage); }}class subnode extends node{ private $debugmessage; public function __construct(){ parent::__construct(); $this ->debugmessage = array(); $this ->debug(__CLASS__); } function getsubmessage(){ var_dump($this ->debugmessage); } function debug($message){ $this ->debugmessage[] = $message; }}$obj = new subnode();$obj ->getsubmessage();echo '<br/>';$obj ->getnodemessage();

这是运行的结果

请问一下各位大神,,,,为什么这段程序的输出结果是这样的,,按我所想 应该是要输出父类的debug()中的信息的,,如果 将父类的debug()中的$this 调用 改为self::调用结果就是我所想的,,,这段程序在phpstrom中并没有报错,,从输出结果看 这段代码应该是没有错的
唉 明白了,, 重载我没有掌握好啊
展开
 我来答
windblast
2015-04-23 · 知道合伙人软件行家
windblast
知道合伙人软件行家
采纳数:5633 获赞数:13623
毕业于空军第一航空学院电子专业,1991年开始接触电脑,从事多年计算机编程,具有较丰富的经验。

向TA提问 私信TA
展开全部
写几点提示供参考:

1、在类的继承中,扩展或派生出来的类(子类)拥有其基类(父类)的所有变量和函数,并包含所有派生类中定义的部分。

也就说,你上面的在子类里类似

private $debugmessage;

这句代码其实没什么意义。

2、如果你在子类里,又定义了与父类里同名的方法,那么,父类的方法会被覆盖,也就是说,你调用的是子类实现的代码。

3、
this 指向的是当前对象
self 指向当前的类
parent 指向的是父类
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式