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中并没有报错,,从输出结果看 这段代码应该是没有错的
唉 明白了,, 重载我没有掌握好啊 展开
这是运行的结果
请问一下各位大神,,,,为什么这段程序的输出结果是这样的,,按我所想 应该是要输出父类的debug()中的信息的,,如果 将父类的debug()中的$this 调用 改为self::调用结果就是我所想的,,,这段程序在phpstrom中并没有报错,,从输出结果看 这段代码应该是没有错的
唉 明白了,, 重载我没有掌握好啊 展开
2015-04-23 · 知道合伙人软件行家
关注
展开全部
写几点提示供参考:
1、在类的继承中,扩展或派生出来的类(子类)拥有其基类(父类)的所有变量和函数,并包含所有派生类中定义的部分。
也就说,你上面的在子类里类似
private $debugmessage;
这句代码其实没什么意义。
2、如果你在子类里,又定义了与父类里同名的方法,那么,父类的方法会被覆盖,也就是说,你调用的是子类实现的代码。
3、
this 指向的是当前对象
self 指向当前的类
parent 指向的是父类
1、在类的继承中,扩展或派生出来的类(子类)拥有其基类(父类)的所有变量和函数,并包含所有派生类中定义的部分。
也就说,你上面的在子类里类似
private $debugmessage;
这句代码其实没什么意义。
2、如果你在子类里,又定义了与父类里同名的方法,那么,父类的方法会被覆盖,也就是说,你调用的是子类实现的代码。
3、
this 指向的是当前对象
self 指向当前的类
parent 指向的是父类
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询