PHP继承

PHP继承

那是一篇迟来的换代,因为它应有在前两日就被更新了,不过出于自家西班牙语四级没过!没过!没过!导致本身心境低落,所以就玩了几天的2230日游,哦不,进行了几天反思,痛定思痛
痛何如哉!

以下都以自个儿个人的敞亮,有错的地点还望不吝赐教。
为啥须求继续?
再三再四正是 贰个子类通过extends父类把父类的脾性和措施继承下去。
若是以往于今内需写多少个类,小学生类和高级中学生类,小学生会说话,走路,考试,高中生也会讲话走路,考试,那么只要您写一遍说话,走路,考试,那么就会来得臃肿,管理起来也会麻烦很多,假设定义叁个类叫做学生类富含说话,走路,考试,然后让小学生类和高级中学生类来一而再这些学生类就会来得好广大,比如那样。

<?php
class student{
    function speak(){
        echo '说话';
    }
    function walk(){
        echo '走路';
    }
    function test(){
        echo '考试';
    }
}
class pupil extends student{
    function test(){
        echo '小学生考试';
    }
}
class senior extends student{
    function test(){
        echo '高中生考试';
    }
}
$pupil=new pupil();
$pupil->speak();
$pupil->walk();
$pupil->test();
echo '<br />';
$senior=new senior();
$senior->speak();
$senior->walk();
$senior->test();
?>

输出:

说话走路小学生考试
说话走路高中生考试

这般代码管理起来就会好广大。
假定未来小学生要学习三个新的技艺吃东西,笔者以后那样写。

<?php
    class student{
        function speak(){
            echo '说话';
        }
        function walk(){
            echo '走路';
        }
        function test(){
            echo '考试';
        }
    }
    class skill{
        function eat(){
            echo '吃东西';
        }
    }
    class pupil extends student,skill{
        function test(){
            echo '小学生考试';
        }
    }
    $pupil=new pupil();
    $pupil->speak();
    $pupil->walk();
    $pupil->test();
    $pupil->eat();
?>

要是这么写,那么就会报错:

Fatal error: Class 'studentskill' not found in D:\xampp\htdocs\1.php on line 18

因为php中是不能这么完成多一连的,假诺想要达成多一而再能够如此写:

<?php
        class student{
            function speak(){
                echo '说话';
            }
            function walk(){
                echo '走路';
            }
            function test(){
                echo '考试';
            }
        }
        class skill extends student{
            function eat(){
                echo '吃东西';
            }
        }
        class pupil extends skill{
            function test(){
                echo '小学生考试';
            }
        }
        $pupil=new pupil();
        $pupil->speak();
        $pupil->walk();
        $pupil->test();
        $pupil->eat();
?>

输出:

说话走路小学生考试吃东西

先用八个skill类继承student类,然后再用pupil类继承skill类,那样就也就是pupil类继承了student类和skill类。

办法重写
假设要落成的四个类有联袂特点,那么就足以将以此合伙的表征抽象出八个父类。
比如说,有小学生类和中学生类,那样的四个类,他们都以学员,那么就能够抽象出几个学生类,学生都会考查,那么就把试验这一个情势写在上学的小孩子那一个类里面。
那么难题即便,小学生是小学生的考试,中学生是中学生的试验,我不大概都输出考试,那里就用到了艺术重写。
在子类中定义3个与父类一样的方式,那样实践的时候,父类中的方法就会被遮盖,从而输出的只有子类中定义的法子。
举例:

<?php
        class student{
            function test(){
                echo '考试';
            }
        }
        class pupil extends student{
            function test(){
                echo '小学生考试';
            }
        }
        class senior extends student{
            function test(){
                echo '中学生考试';
            }
        }
        $pupil=new pupil();
        $pupil->test();
        echo '<br />';
        $senior=new senior();
        $senior->test();
?>

输出:

小学生考试
中学生考试

     继承是PHP5面象对象程序设计的显要特征之一,它是指建立七个新的派生类,从叁个或八个先前定义的类中继承数据和函数,而且能够重新定义或加进新数据和
函数,从而建立了类的层系或阶段。

   
 继承性是子类自动共享父类数据结构和办法的建制,那是类之间的一种关系。在概念和兑现2个类的时候,可以在一个早已存在的类的底子之上来开始展览,把这几个早已存在的类所定义的始末作为团结的内容,并进入若干新的剧情。

     

     举例:

     比如您未来曾经有八个“人”那几个类了,这么些类里面有七个分子属性“姓名和年龄”以及还有多个成员方法“说话的主意和走路的主意“,
假若以后程序须要二个学员的类, 因为学生的也是人,
所以学生也有成员属性“姓名和年龄”以及成员方法“说话的措施和行动的艺术“,那个时候你就能够让学生类来继承人那一个类,
继承之后,学生类就会把全人类里面的具有的习性都接二连三过来,
就无须你再去重新声美赞臣(Meadjohnson)遍这一个分子属性和方式了,
因为学生类里面还有各省质高校校的质量和读书的点子,所以在你做的学生类里面有继续自人类里面包车型地铁习性和措施之外在累加学生特有的”所在该校属性“和”学习的方
法“, 那样一个上学的小孩子类就声称完毕了, 继函大家也能够叫作“扩展”,
从地点大家就足以看出,学生类对人类实行了扩展,
在人类里原来三个属性和七个艺术的底子上加上2个属性和1个格局扩大出来二个新的学习者类。

     

1.父类
2.子类
子类可以继承父类的方方面面
特点:单继承,三个子类只好有一个父类,3个父类能够派生三个子类

class Ren
{
    public $name;

    function Say()
    {
        echo $this->name."正在讲话";
    }
}

class China extends Ren          //子类对父类的继承
{


}
$c = new China();
$c->Say();
var_dump($c);

 

结果:

图片 1

 

 可拓展性:

class Ren
{
    public $name;

    function Say()
    {
        echo $this->name."正在讲话";
    }
}

class China extends Ren        
{
    function Run()                       //拓展父类
    {
        echo $this->name."正在跑步";
    }
}
$c = new China();
$c->Say();
$c->Run();

  

结果:

图片 2

 

 

 重写:override

class Ren
{
    public $name;

    function Say()
    {
        echo $this->name."正在讲话";
    }
}

class China extends Ren
{
    //子类对父类的方法进行重写
    function Say()
    {
        echo "你好";
    }

    function Run()                      //拓展
    {
        echo $this->name."正在跑步";
    }
}

class America extends Ren
{
    //子类对父类的方法进行重写
    function Say()
    {
        echo "hello";
    }
}

  

结果:

图片 3

 

持续及开始展览:

class Ren
{
    public $name;

    function Say()
    {
        echo $this->name."正在讲话";
    }
}

class China extends Ren
{
    //子类对父类的方法进行重写
    function Say()
    {
        parent::Say();                //两个冒号
        echo "你好";
    }
}
$c = new China();
$c->Say();

  

结果:

图片 4

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图