首页后端开发PHPPHP中面向对象之继承

PHP中面向对象之继承

时间2024-02-02 03:22:03发布访客分类PHP浏览1045
导读:收集整理的这篇文章主要介绍了PHP中面向对象之继承,觉得挺不错的,现在分享给大家,也给大家做个参考。本文目标:1、了解继承的定义2、掌握继承的好处(一)、定义 我们仔细看上面一张图,然后做一件事情,找出他们的共同点共同点:...
收集整理的这篇文章主要介绍了PHP中面向对象之继承,觉得挺不错的,现在分享给大家,也给大家做个参考。

本文目标:

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中面向对象之继承的详细内容,更多请关注其它相关文章!

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: PHP中面向对象之继承
本文地址: https://pptw.com/jishu/596294.html
PHP中的面向对象之构造函数详解 EasySwoole 基础入门

游客 回复需填写必要信息