本文目标:
1、了解继承的定义
2、掌握继承的好处
(一)、定义
我们仔细看上面一张图,然后做一件事情,找出他们的共同点
共同点:
1、都拥有部分相同的属性和方法
2、他们都是人
按照正常类的定义走,我们要实现以上2个类,我们得分别定义NBA球员这个类的所有属性和方法,然后定义女主播类的时候,还得写一遍重复的姓名,身高,体重等属性和吃饭的方法,如果又有一个类比如叫学生,那意味着这些共同的属性和共同的方法又得重复写一遍,以此类推,代码会有很多地方类似,这样增加的代码的冗余性,所以为了解决这种冗余性,为了让代码更简洁,可重用性高,我们可以把这些共同的属性和方法都写到一块去,然后让每个类都去调用这个公共的属性和方法,这样维护起来是不是就更加方便了,而且代码也更加简洁了,那么这种做法我们就叫做继承
具体怎么做的呢,如下图
我们先创建了一个“人“的类,让这个人都具有2个类都有的属性和方法,再让NBA球员和女主播都继承 “人” 这个类
概念:被继承的类叫父类,比如人,继承的类叫子类
总结:什么是继承,继承是一种方法,用来提高代码的可重用性和减少代码的冗余性,就像现实生活中的遗传一样,子女都会继承父母的部分基因,所以你一生下来你就是有人类的共同属性和行为
(二)、继承的好处
1、提高代码的重用性,节约了编程的时间和代价
父类中定义的属性和方法就不需要子类中重复定义,子类只要继承了父类,就拥有了父类中所有的属性和方法
2、对于同一个父类下的所有子类,调用他们的时候可以一视同仁
比如不管是NBA球员还是女主播,因为他们都是人,所以我们调用他们的时候可以直接调用父类的方法,比如吃饭,而不用管这个类到底是NBA球员还是女主播
3、子类可以修改调整父类定义的类成员
a、我们称为重写(Overwrite)
b、一旦子类修改好了,就按照子类定义的方法执行
这相当于变异
学习任何东西我们既要知道其理论,还要有相关的理论实践,其实所有的理论都是实践得出来的,所以有的时候我一再强调,理论虽然很抽象,但是大家有了一定的实践经验后也要进行总结,总结一些言简意赅,通俗易懂的“理论”,这个习惯培养好了以后,我相信很多知识大家能够了解的更加透彻,同时更容易抓住事情的本质,这样分析问题的能力也会得到提升。
好了,既然要理论和实践相结合,那么接下来,我们通过代码进行实操演示,看看在代码中具体是怎么实现继承的
(三)、具体代码
<?php /*** * 案例目标 * 1.掌握继承的定义 2.掌握继承的好处 */ //定义一个“人”类 class Human{ public $name = "";//姓名 public $height = "";//身高 public $weight = "";//体重 public function eat($food){ echo $this->name."在吃".$food."<br/>"; } } //女主播 class Anchors extends Human{ public $name = ""; public $stageName = ""; public function __construct( $name,$stageName ){ $this->name = $name; $this->stageName = $stageName; } public function singing(){ echo "我是女主播,我会唱歌<br/>"; } //重写方法eat public function eat($food){ echo "我是女主播,我是边唱歌边吃{$food}<br/>"; } } //Nba球员类 class NbaPlayer extends Human{ //因为父类已经有了,所以就不需要再写了,通过extends来实现 // public $name = "";//姓名 // public $height = "";//身高 // public $weight = "";//体重 public $team = "";//团队 public $playerName = "";//球员号码 public function __construct( $name,$height,$weight,$team,$playerName ){ $this->name = $name; $this->height=$height; $this->weight = $weight; $this->team = $team; $this->playName = $playerName; echo "构造函数执行了,当前对象是{$this->name}<br/>"; } //跑步 public function run(){ echo "跑步中<br/>"; } //跳跃 public function jump(){ echo "跳跃<br/>"; } //运球 public function dribble(){ echo "运球<br/>"; } //传球 public function pass(){ echo "传球<br/>"; } //投篮 public function shoot(){ echo "投篮<br/>"; } //扣篮 public function dunk(){ echo "扣篮<br/>"; } //重写方法eat ,只要名称和父类一样就是代表重写了不一定参数也要保持一样 public function eat($food){ echo "我是Nba球员,我是站着吃饭,边吃{$food}边看球赛<br/>"; } } //测试,NBA球员,没有直接定义name,身高,体重,现在输出一下看结果有没有 //创建乔丹对象 $jordon = new NbaPlayer("乔丹","1.98米","98公斤","公牛","23"); //输出乔丹对象 echo "名称= ".$jordon->name."<br/>"; //测试,NBA球员,没有直接定义eat方法,现在输出一下看结果有没有 echo $jordon->eat("苹果"); //证明第二个好处,只要是个人就可以调用它的eat方法 $linda = new Anchors("琳达","LD"); echo $linda->eat("苹果"); //测试第三个好处是否真实 //思路1.为女主播和NBA球员2个类分别重写eat方法 // 2.再次执行2个对象的eat方法 // 会发现一旦子类重写了父类的方法,那么就会调用子类自己的方法了,这里就大家自己写下,因为上面我已经调用了eat方法,一旦重写了,上面的结果会变 ?>
通过上述代码的演示,我们总结一下:
1、extends 就是继承,通过这个关键字可以实现子类继承父类,共享父类的所有属性和方法
2、继承代码的其他特点:
● 在子类构造函数中也可以直接通过$this->来访问
● 在php中extends 后面只能继承一个类,不能用,来实现继承多个类,否则会报错
总结:
本文其实目标只有2个,知道继承的定义和好处,最后我们通过代码相信对继承的好处有了更深的体会和理解
以上是PHP中面向对象之继承的详细内容。更多信息请关注PHP中文网其他相关文章!

PHP在现代编程中仍然是一个强大且广泛使用的工具,尤其在web开发领域。1)PHP易用且与数据库集成无缝,是许多开发者的首选。2)它支持动态内容生成和面向对象编程,适合快速创建和维护网站。3)PHP的性能可以通过缓存和优化数据库查询来提升,其广泛的社区和丰富生态系统使其在当今技术栈中仍具重要地位。

在PHP中,弱引用是通过WeakReference类实现的,不会阻止垃圾回收器回收对象。弱引用适用于缓存系统和事件监听器等场景,需注意其不能保证对象存活,且垃圾回收可能延迟。

\_\_invoke方法允许对象像函数一样被调用。1.定义\_\_invoke方法使对象可被调用。2.使用$obj(...)语法时,PHP会执行\_\_invoke方法。3.适用于日志记录和计算器等场景,提高代码灵活性和可读性。

Fibers在PHP8.1中引入,提升了并发处理能力。1)Fibers是一种轻量级的并发模型,类似于协程。2)它们允许开发者手动控制任务的执行流,适合处理I/O密集型任务。3)使用Fibers可以编写更高效、响应性更强的代码。

PHP社区提供了丰富的资源和支持,帮助开发者成长。1)资源包括官方文档、教程、博客和开源项目如Laravel和Symfony。2)支持可以通过StackOverflow、Reddit和Slack频道获得。3)开发动态可以通过关注RFC了解。4)融入社区可以通过积极参与、贡献代码和学习分享来实现。

PHP和Python各有优势,选择应基于项目需求。1.PHP适合web开发,语法简单,执行效率高。2.Python适用于数据科学和机器学习,语法简洁,库丰富。

PHP不是在消亡,而是在不断适应和进化。1)PHP从1994年起经历多次版本迭代,适应新技术趋势。2)目前广泛应用于电子商务、内容管理系统等领域。3)PHP8引入JIT编译器等功能,提升性能和现代化。4)使用OPcache和遵循PSR-12标准可优化性能和代码质量。

PHP的未来将通过适应新技术趋势和引入创新特性来实现:1)适应云计算、容器化和微服务架构,支持Docker和Kubernetes;2)引入JIT编译器和枚举类型,提升性能和数据处理效率;3)持续优化性能和推广最佳实践。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具

SublimeText3 Linux新版
SublimeText3 Linux最新版

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

Atom编辑器mac版下载
最流行的的开源编辑器