这篇文章将为大家详细讲解有关PHP中类继承关系的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
在PHP中,我时常会写一个类,类写了一个共用方法,然后让子类去继承就能得到相应的功能。假设大致有这么一个父类:
<>之前,1,PHP & lt; ? ,2 class 父亲{ ,3 ,4,,,,public function __construct () { ,5,,,,,,,,echo & # 39;我是父类的构造方法! & # 39;; ,6,,,,} ,7 ,8个,,,,protected function 说($ str =, & # 39; Hello 世界! & # 39;){ ,9日,,,,,,,,echo & # 39;说了一句话:& # 39;,只str美元; 10个,,,,,} 11,} 12,?在然后呢,搞一个子类去继承他:
1, php & lt; ? 2, 3,class chirld  extends 父亲{ 4, 5,,,,,public __construct () { 6,,,,,,,,,echo & # 39;我是子类的构造方法~ & # 39;; 7,,,,,} 8,}
此时你实例化子类,结果将会是我是子类的构造方法~ !,
当然,因为继承关系,所以子类是可以调用父类的说()方法的。
如果你想实现父类的构造方法,然而你又想实现子类的构造方法,你可以这样子去做:
<>之前,1,php & lt; ? ,2 ,3 class chirld  extends 父亲{ ,4 ,5,,,,public __construct () { ,6,,,,,,,,父母:__construct (); ,7,,,,,,,,echo & # 39;我是子类的构造方法~ & # 39;; ,8个,,,,} ,9} 10, 11,?在这时候就会输出我是父类的构造方法!和我是子类的构造方法~。
假设你在子类中定义了这么一个方法:
1,,,,, protected function 说($ str =, & # 39; & # 39;) { 2,,,,,,,,,echo & # 39;我是子类的说# 39;; 3,,,,,}
那么,你此时从父类继承下来的sys()方法将会被重写,所以调用后输出的结果就是:我是子类的说。
如果你这样定义会怎样?
1,,,,, public function 说($ str =, & # 39; & # 39;) { 2,,,,,,,,,echo & # 39;我是子类的方法哦~ & # 39;; 3,,,,,}
这样的写法还是可以的。PHP跟其他强类型语言不同的地方是,PHP重写方法允许你对重写的方法”向上公有化”,而不允许你”向下私有化”,就比如在这里你定义为私人是肯定会报错的,而像c++这样语言确恰恰相反。
PHP的对于这种情况的思想就是,你父亲给了你受保护级别的遗产,此时在你手上是保护级别的,你父亲允许你对对别人分享,也就是公共的,但不允许你自己藏起来,也就是私人的,自己独吞肯定不行的。
此时你肯定会问,那么父类的说()设置为私人会怎样?,
结果不会怎样,就是父类已经私有化了,子类根本继承不到,所以你在子类中的说()方法随你这么定都可以。
还有一个问题,就是父类已经定义了sys()中带可选参数,那么,在子类中的你像下面这样无参数定义会怎样呢?
<>之前,,,,public function 说(){ ,,,,,,,echo & # 39;哈哈。我没有参数了耶~ & # 39;; ,,,}结果还是可以正常运行的,只不过会有,代码级的提示。原因在于PHP标准就是参数的数量必须跟父类对齐,当然,可以在PHP。ini中进行错误级别设置。
关于“PHP中类继承关系的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看的到。