本文目标:
1、了解继承的定义
2、掌握继承的好处
(一)、定义
概念:被继承的类叫父类,比如人,继承的类叫子类
总结:什么是继承,继承是一种方法,用来提高代码的可重用性和减少代码的冗余性,就像现实生活中的遗传一样,子女都会继承父母的部分基因,所以你一生下来你就是有人类的共同属性和行为
(二)、继承的好处
1、提高代码的重用性,节约了编程的时间和代价
父类中定义的属性和方法就不需要子类中重复定义,子类只要继承了父类,就拥有了父类中所有的属性和方法
2、对于同一个父类下的所有子类,调用他们的时候可以一视同仁
比如不管是NBA球员还是女主播,因为他们都是人,所以我们调用他们的时候可以直接调用父类的方法,比如吃饭,而不用管这个类到底是NBA球员还是女主播
3、子类可以修改调整父类定义的类成员
a、我们称为重写(Overwrite)
b、一旦子类修改好了,就按照子类定义的方法执行
这相当于变异
学习任何东西我们既要知道其理论,还要有相关的理论实践,其实所有的理论都是实践得出来的,所以有的时候我一再强调,理论虽然很抽象,但是大家有了一定的实践经验后也要进行总结,总结一些言简意赅,通俗易懂的“理论”,这个习惯培养好了以后,我相信很多知识大家能够了解的更加透彻,同时更容易抓住事情的本质,这样分析问题的能力也会得到提升。
好了,既然要理论和实践相结合,那么接下来,我们通过代码进行实操演示,看看在代码中具体是怎么实现继承的
(三)、具体代码name."在吃".$food."
";
}
}
//女主播
class Anchors extends Human{
public $name = "";
public $stageName = "";
public function __construct( $name,$stageName ){
$this->name = $name;
$this->stageName = $stageName;
}
public function singing(){
echo "我是女主播,我会唱歌
";
}
//重写方法eat
public function eat($food){
echo "我是女主播,我是边唱歌边吃{$food}
";
}
}
//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}
";
}
//跑步
public function run(){
echo "跑步中
";
}
//跳跃
public function jump(){
echo "跳跃
";
}
//运球
public function dribble(){
echo "运球
";
}
//传球
public function pass(){
echo "传球
";
}
//投篮
public function shoot(){
echo "投篮
";
}
//扣篮
public function dunk(){
echo "扣篮
";
}
//重写方法eat ,只要名称和父类一样就是代表重写了不一定参数也要保持一样
public function eat($food){
echo "我是Nba球员,我是站着吃饭,边吃{$food}边看球赛
";
}
}
//测试,NBA球员,没有直接定义name,身高,体重,现在输出一下看结果有没有
//创建乔丹对象
$jordon = new NbaPlayer("乔丹","1.98米","98公斤","公牛","23");
//输出乔丹对象
echo "名称= ".$jordon->name."
";
//测试,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个,知道继承的定义和好处,最后我们通过代码相信对继承的好处有了更深的体会和理解