php怎么看看继承关系,PHP中类的继承关系,PHP继承关系_PHP教程

这篇博客探讨了PHP中的类继承概念,通过实例展示了如何创建父类和子类,以及如何调用父类的方法。文章强调了PHP中方法重写的特点,即允许子类将父类的受保护方法公有化,但不允许私有化。同时,讨论了构造方法的调用顺序以及参数不匹配时的提示。此外,还提到了将父类方法设置为private后,子类无法继承的情况。
摘要由CSDN通过智能技术生成

PHP中类的继承关系,PHP继承关系

在PHP中,我时常会写一个类,类写了一个共用方法,然后让子类去继承就能得到相应的功能。假设大致有这么一个父类:

1 php

2 classFather{

3

4 public function__construct(){

5 echo '我是父类的构造方法!';

6 }

7

8 protected function say($str = 'Hello World!'){

9 echo '说了一句话:' . $str;

10 }

11 }

12 ?>

然后呢,搞一个子类去继承他:

1 php

2

3 class chirld extendsFather{

4

5 public__construct(){

6 echo '我是子类的构造方法~';

7 }

8 }

此时你实例化子类,结果将会是我是子类的构造方法~!

当然,因为继承关系,所以子类是可以调用父类的say()方法的。

如果你想实现父类的构造方法,然而你又想实现子类的构造方法,你可以这样子去做:

1 php

2

3 class chirld extendsFather{

4

5 public__construct(){

6 parent::__construct();

7 echo '我是子类的构造方法~';

8 }

9 }

10

11 ?>

这时候就会输出我是父类的构造方法!和我是子类的构造方法~。

假设你在子类中定义了这么一个方法:

1 protected function say($str = ''){

2 echo '我是子类的say';

3 }

那么,你此时从父类继承下来的sys()方法将会被重写,所以调用后输出的结果就是:我是子类的say。

如果你这样定义会怎样?

1 public function say($str = ''){

2 echo '我是子类的方法哦~';

3 }

这样的写法还是可以的。PHP跟其他强类型语言不同的地方是,PHP重写方法允许你对重写的方法”向上公有化”,而不允许你”向下私有化”,就比如在这里你定义为private是肯定会报错的,而像C++这样语言确恰恰相反。

PHP的对于这种情况的思想就是,你父亲给了你受保护级别的遗产,此时在你手上是保护级别的,你父亲允许你对对别人分享,也就是public,但不允许你自己藏起来,也就是private,自己独吞肯定不行的。

此时你肯定会问,那么父类的say()设置为private会怎样?

结果不会怎样,就是父类已经私有化了,子类根本继承不到,所以你在子类中的say()方法随你这么定都可以。

还有一个问题,就是父类已经定义了sys()中带可选参数,那么,在子类中的你像下面这样无参数定义会怎样呢?

public functionsay(){

echo '哈哈。我没有参数了耶~';

}

结果还是可以正常运行的,只不过会有 E_STRICT级的提示。原因在于PHP标准就是参数的数量必须跟父类对齐,当然,可以在php.ini中进行错误级别设置。

以上如果有什么错误的地方,还请及时纠正,谢谢。

http://www.bkjia.com/PHPjc/1033980.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/1033980.htmlTechArticlePHP中类的继承关系,PHP继承关系 在PHP中,我时常会写一个类,类写了一个共用方法,然后让子类去继承就能得到相应的功能。假设大致有这...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值