• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

php的学习笔记之面向对象(四)继承补充

php 搞代码 3年前 (2022-01-23) 17次浏览 已收录 0个评论

之前说到每次新建一个对象,都会先执行__construct方法,那么在继承的时候,是否先执行父类的_construct方法,再执行子类__construct方法呢?
我们来做一个实验:

<code><span><span>class</span><span>Father</span>{</span><span>public</span><span><span>function</span><span>__construct</span><span>()</span>{</span><span>echo</span><span>"father has constructed"</span>;    }}<span><span>class</span><span>Child</span>{</span><span>public</span><span><span>function</span><span>__construct</span><span>()</span>{</span><span>echo</span><span>"child has constructed"</span>;    }}<span>$c</span> = <span>new</span> Child();</code>

输出结果如下:
child has constructed
说明在创建子类的时没有调用父类的__construct方法,这是为什么呢,原来这是用到php中的重写(overwrite)这样的机制,子类的构造函数实际上是覆盖(override)了父类的构造函数,这时执行的是该子类的构造函数。
那么如果子类不写__construct方法会发生什么事呢?我们来实验一下:

<code><span><span>class</span><span>Father</span>{</span><span>public</span><span><span>function</span><span>__construct</span><span>()</span>{</span><span>echo</span><span>"father has constructed"</span>;    }}<span><span>class</span><span>Child</span>{</span><span>public</span><span><span>function</span><span>show</span><span>()</span>{</span><span>echo</span><span>"dd"</span>;    }}<span>$c</span> = <span>new</span> Child();<span>$c</span>->show();输出结果为:dd</code>

;

输出结果为:dd
说明父类的__construct()没有被继承。

‘).addClass(‘pre-numbering’).hide(); $(this).addClass(‘has-numbering’).parent().append($numbering); for (i = 1; i <= lines; i++) { 本#文来源gaodai$ma#com搞$$代**码网$ $numbering.append($(‘

  • ‘).text(i)); }; $numbering.fadeIn(1700); }); }); </script>

    以上就介绍了php的学习笔记之面向对象(四)继承补充,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。


    搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
    转载请注明原文链接:php的学习笔记之面向对象(四)继承补充
    喜欢 (0)
    [搞代码]
    分享 (0)
  • 发表我的评论
    取消评论

    表情 贴图 加粗 删除线 居中 斜体 签到

    Hi,您需要填写昵称和邮箱!

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址