问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

学习猿地 PHP教程 23 面向对象的魔术方法及特性 4.面向对象继承

发布网友 发布时间:2022-04-06 14:51

我来回答

1个回答

懂视网 时间:2022-04-06 19:12

本文目标:

1、了解继承的定义

2、掌握继承的好处

(一)、定义

1.png

我们仔细看上面一张图,然后做一件事情,找出他们的共同点

共同点:

1、都拥有部分相同的属性和方法

2、他们都是人

按照正常类的定义走,我们要实现以上2个类,我们得分别定义NBA球员这个类的所有属性和方法,然后定义女主播类的时候,还得写一遍重复的姓名,身高,体重等属性和吃饭的方法,如果又有一个类比如叫学生,那意味着这些共同的属性和共同的方法又得重复写一遍,以此类推,代码会有很多地方类似,这样增加的代码的冗余性,所以为了解决这种冗余性,为了让代码更简洁,可重用性高,我们可以把这些共同的属性和方法都写到一块去,然后让每个类都去调用这个公共的属性和方法,这样维护起来是不是就更加方便了,而且代码也更加简洁了,那么这种做法我们就叫做继承

具体怎么做的呢,如下图

2.png

我们先创建了一个“人“的类,让这个人都具有2个类都有的属性和方法,再让NBA球员和女主播都继承 “人” 这个类

3.png

概念:被继承的类叫父类,比如人,继承的类叫子类

总结:什么是继承,继承是一种方法,用来提高代码的可重用性和减少代码的冗余性,就像现实生活中的遗传一样,子女都会继承父母的部分基因,所以你一生下来你就是有人类的共同属性和行为

(二)、继承的好处

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个,知道继承的定义和好处,最后我们通过代码相信对继承的好处有了更深的体会和理解

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
cad里面打完字怎么还原十字架 财务建帐需要什么 建账建账的基本要求 当爱情与亲情需要丢弃一样时,你会选择丢弃哪一方 当爱情和亲情有冲突时你会怎样决择?你会为你所爱的人不顾一切吗? 剑网三 查看余额 因为某些特殊原因不好登陆游戏查看,求其他方式_百度知 ... 右肺上叶中叶结节灶怎么回事 节能门窗有哪些标准 节能门窗有哪些 节能门窗具有哪些特征 远东宏信集团,宏信建发有限公司,普通员工给交养老保险吗?干够多长时间给交养老保险? 黑龙江民富保险代理有限公司怎么样? 远东宏信有限公司的董事高管 中国电信股份有限公司社会招聘的员工都是干什么的工作 黑龙江省宏信保险代理有限公司哈尔滨分公司怎么样? 宏信保险公司是正规公司吗 TF三代遇到大师兄TFBOYS,做出的行为让人惊讶,他们干了什么? 张极家很有钱吗? 怎么和篮球争宠? TF家族三代归谁管的啊?李飞吗 邓佳鑫有钱吗 movie复数形式 苏新皓是裤子老师的儿子吗? movie和movies的问题 时代少年团谁家里最有钱? trafficgoers是什么意思? 想知道TF三代练习生的家境都怎么样? movie series的意思 严浩翔和苏新皓谁更有钱 膝盖久弯痠痛、伸直弯曲会发出声音什么原因 黑龙江正新保险代理有限责任公司怎么样? 桂平市宏信船舶买一年保险要多少钱 宏信建发员工缴纳天津保险公积金么? 百年人寿保险股份有限公司陕西分公司怎么样? 中化资本是个什么样的公司? 网上那种全额退保的服务可信吗? 苏州中国平安保险 打电话叫我面试 是真是假? 百年人寿保险股份有限公司陕西分公司怎么样 深圳宏信汽车贸易有限公司怎么样? 美国x-rated movie有什么特色?与motel-room 有关的,英文的更好,急!!! X-战警的X战警2 请问X战记一共出了几张音乐专辑? loveisparkingmovie什么意思 【英语】blue movie何解 求一部动漫~ 大佬有X战警2X2(2003)由帕特里克斯图尔特主演高清百度云资源 http:&#47;&#47;www.g6hentai.com&#47;video&#47;1068&#47;to-love-ru-3d-hentai-movie-diary-gold是什么游戏 ______struck me most in the movie was the father’s deep love for his son. A.That B.It C.W 求大神用W,X,H,N这四个字母为首字母拼四个单词造句! xvod 如何播放