原因是这样的,你B继承了A,test这个方法你继承下来了,但是test本身是在A类里面的,也就是说,你继承了test,但是test依旧是属于A的,那么此时test里的$this指的就是A这个对象。

如果你想要在B里调用B自己的foo的话,你可以这么做:

class B extends A {

public function foo() {

echo 'b';

}

public function test() {

parent::test(); // 调用父类的test方法,父类里的test方法调用父类自身的foo方法

$this->foo(); // 掉用自己的foo方法

}

}

整体来说的话,就是不要把继承当成属于.

另外就是官方说的是正确的,你这里并不是继承问题,而是应该弄清楚属于与不属于问题。

根据你的回复,就这个我继续做一下回答:

看一下你本身的这个例子

class A {

private function foo() {

echo 'a';

}

public function test() {

$this->foo();

}

}

class B extends A {

public function foo() {

echo 'b';

}

}

在这种情况下,如果你把A中的foo方法改成了public,那么此时foo就被继承了,而在B类里的foo方法相当于是重写了A类的foo方法,但是此时A类中的foo并没有消失,但是需要在B类中以parent::foo()这种形式来访问父类方法。这种情况方便理解,可说A中的foo方法被隐藏了。

既然被重写了,那么自然就会调用foo就是调用重写后的foo了,可以理解为既然有新的东西,那么就肯定用新东西了,新的自然优先嘛。

然后回头看为什么A中原本为private,虽然B继承了一个公共方法还是访问A类中的foo呢?首先我们看一下前提概要,也就是A类中的foo是private的,B类不可继承,那么此时就相当于有两个foo,一个是private的,一个是public的,嗯,这里要区分private与"隐藏"是不同的概念。

那么此时其实就相当于是,虽然B继承了A,但是A会首先到自己里面找,那么此时foo没有被重写,也就是没有被覆盖,那么肯定是调用自己的了。对于A来说,B你继承了我,但是我自己有,我就不要你的东西了,还是自己老婆好啊。

嗯。。。我试着用几句更简单的话来描述看看是否可行:

A: 我是A?

B: 我是B,我继承你了啊,我继承了你的test,我有foo

A:嗯,我也有foo,我不给你用

B:我被调用了啊,用的是继承了你的test

A:嗯,我看看,哦,调用了foo啊,我有

B:能用我的foo吗?

A:不能

B:好吧。。。?

再来看把A中的private变为public后:

A:我是A

B:我是B,我继承了你的test,也继承了你的foo,然而我把你的foo重写了

A:我艹你大爷?,那你用parent::foo()调用我给你的foo了么?

B:。。。没有,我现在是大爷?

A:好吧。。。

B:我被调用了啊,用的是继承了你的test

A:好吧...卧槽,foo被你重写了啊,那用你的foo

B:那是当然啊,要是还要用你的,我会用parent::foo()调用的

A:行吧,艹你大爷?

php+只能继承一次,php继承相关的一个问题相关推荐

  1. 【Python五篇慢慢弹(5)】类的继承案例解析,python相关知识延伸

    类的继承案例解析,python相关知识延伸 作者:白宁超 2016年10月10日22:36:57 摘要:继<快速上手学python>一文之后,笔者又将python官方文档认真学习下.官方给 ...

  2. 类的继承python事例_【Python五篇慢慢弹(5)】类的继承案例解析,python相关知识延伸...

    作者:白宁超 2016年10月10日22:36:57 摘要:继一文之后,笔者又将python官方文档认真学习下.官方给出的pythondoc入门资料包含了基本要点.本文是对文档常用核心要点进行梳理,简 ...

  3. java继承对象转换_java 继承的基础(转)

    java 继承的基础(转)[@more@]继承是面向对象编程技术的一块基石,因为它允许创建分等级层次的类.运用继承,你能够创建一个通用类,它定义了一系列相关项目的一般特性.该类可以被更具体的类继承,每 ...

  4. 开课吧:继承是什么?继承的基础有什么?

    继承是面向对象编程技术的一块基石,因为它允许创建分等级层次的类.运用继承,你能够创建一个通用类,它定义了一系列相关项目的一般特性.该类可以被更具体的类继承,每个具体的类都增加一些自己特有的东西. 在J ...

  5. 详细解析JavaScript中的继承(包括组合继承和寄生式继承)

    继承:相信很多学习过Java等面向对象语言的同学,都会接触过继承,它们实现继承的主要方式是接口继承和实现继承.但由于JavaScript函数没有签名,所以无法实现接口继承.ECMAScript支持实现 ...

  6. 北京指标能单独继承吗?怎么继承?

    自从小汽车限购以来,每个人都有不同的获取牌照的途径.子女能否继承父母的小汽车指标?为了解决这个疑惑,京牌号黛黛来说一宗北京的真实案例. 母亲中指标后去世,儿子起诉要求继承母亲指标 北京一位顾女士在20 ...

  7. 继承详解(虚继承实现原理)

    继承的概念及定义 概念: ​ 继承机制是面向对象程序设计为了提高代码复用率的一种手段,它可以保持原类特性的基础上进行拓展,简单来说继承是类层次的复用. 接下来我们来看一个简单的继承 class Per ...

  8. C++继承和多态特性——继承详解(2)

    目录 一.派生类和基类的构造析构关系 1.派生类并不继承基类的构造和析构函数,只继承成员变量和普通成员方法 2.派生类的构造函数一定会调用基类的构造函数,析构也一样 3.为什么派生类的构造(析构)必须 ...

  9. java 抽象类继承抽象类_Java之继承、抽象类、接口篇

    一.继承(extends) 什么是继承? 继承是对现实生活中的"分类"概念的一种模拟. 狮子拥有动物的一切基本特性,但同时又拥有自己的独特的特性,这就是"继承" ...

  10. js继承之借用构造函数继承

    2018.5.27 今天本人又在查关于继承的问题,重新温习了一遍书,发现之前举的例子实际上不太清晰,故做调整. 我的上一篇文章介绍了,原型链继承模式.原型链继承虽然很强大,但是单纯的原型链模式并不能很 ...

最新文章

  1. 用Kotlin在IntelliJ Idea中无法生成 spring-configuration-metadata.json 文件
  2. 算法与数据结构重点归纳
  3. java中no1_Java程序设计实验(NO.1).doc
  4. html前台检验特殊字符正则,【Qt编程】html特殊字符及正则表达式
  5. 国漫《大闹天宫》4K修复版上线西瓜视频、鲜时光
  6. Python——模拟轮盘抽奖游戏
  7. Spring Boot 接入支付宝完整流程实战
  8. 学计算机后期制作,后期制作
  9. 中关村买手机上当案例
  10. 交换机分布缓存_缓存比普通交换机也大许多
  11. 有哪些有用的人际交往小常识?
  12. 星淘惠告诉你跨境平台那么多,凭什么要选亚马逊?
  13. R语言绘制棒棒糖图(火柴杆图)
  14. 严格别名规则“-fstrict-aliasing”和“-fno-strict-aliasing”及类型双关
  15. matlab solve函数错误【检查对函数 ‘solve‘ 的调用中是否缺失参数或参数数据类型不正确】
  16. ERROR: cannot download default sources list from: https://raw.githubusercontent.com/ros/rosdistro/ma
  17. 网络安全--入侵攻击类型
  18. 分享六个经典的 SpringBoot 开源项目
  19. 【考生说】持之以恒才是胜利的推动器、一周时间通过C认证的同学怎么说
  20. mpt3工具箱学习记录--day2

热门文章

  1. Elasticsearch 7.X SpringBoot 使用 ElasticsearchRestTemplate 操作 ES
  2. 英飞凌XMC2GO控制读写英飞凌BGT24LTR22射频板寄存器
  3. 互联网晚报 |11/15 星期二| ​​苹果混合现实头显或明年发布 ;得物再回应华为手机提示得物删除照片;亚马逊计划裁员1万名,...
  4. 【20201215】退市修规 股指或受鼓舞;沪镍延续涨势 谨防冲高回落;开工下滑 焦炭小幅反弹;国际油脂震荡上行 内盘冲高回落
  5. 错误记录: 解决刚下载安装启动Nacos但出现打不开,双击闪退问题
  6. c语言将100-200之间的质数找出来,万胜国际app -官方网站
  7. Computer Vision_33_SIFT:Distinctive Image Features from Scale-Invariant Keypoints——2004
  8. 利用XP实现自动定时关机
  9. 车牌识别部署瑞芯微RK3588
  10. python基础教程 excel_Python新手入门:Excel基本操作(二)