首页 / PHP / 由子类中的构造函数调用的php重写方法
由子类中的构造函数调用的php重写方法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了由子类中的构造函数调用的php重写方法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1234字,纯文字阅读大概需要2分钟。
内容图文
![由子类中的构造函数调用的php重写方法](/upload/InfoBanner/zyjiaocheng/724/a43e2b0b4d3a49a79e1d8052fc189906.jpg)
我正在玩几个课程,以了解父母和孩子之间的关系.我设置父级有一个调用init方法的构造函数.然后,当我向子进程添加一个init方法时,它应该覆盖父init,不应该吗?但正在发生的是两种方法都被调用.
为了测试这个,我编写了一个名为Model的类和一个名为Instance的子类.这是代码:
$try = new Instance;
echo $try;
class Model{
public function __construct(){
$this->init();
}
public function init()
{
return $this->className();
}
public function __toString()
{
return $this->className();
}
public static function className()
{
return get_called_class();
}
}
class Instance extends Model
{
public function init()
{
echo "tada! ";
}
}
给出以下输出:
tada! Instance.
在类Model中,我使用magic方法__toString()将类名作为字符串返回.父类的构造函数调用父init()方法,在这种情况下,它会回显类名.
我的理解是,如果我编写一个子类,在这种情况下,该类称为Instance,使用init()方法,它将覆盖父init()方法,但这不是正在发生的事情.在这种情况下,它返回两个init mehtods,我不知道为什么.有谁能解释一下?
解决方法:
事实上 –
使用“$try = new Instance;”实例化类“Instance”的对象时.它调用构造函数,因为子类重写了“init”方法,所以它会打印“tada!”.
在另一行,您使用“echo $try”回显类“实例”的对象以及在父类中实现的魔术方法__toString().因此它将“Instance”打印为类名.
你只能运行$try = new Instance;只打印“tada!”.
内容总结
以上是互联网集市为您收集整理的由子类中的构造函数调用的php重写方法全部内容,希望文章能够帮你解决由子类中的构造函数调用的php重写方法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。