PHP继承

PHP继承

这是一篇迟来的翻新,因为它应有在前两日就被更新了,可是由于本身泰语四级没过!没过!没过!导致小编心绪消沉,所以就玩了几天的游艺,哦不,举行了几天反思,痛定思痛
痛何如哉!

以下都以自个儿个人的领会,有错的地方还望不吝赐教。
何以要求后续?
持续就是 一个子类通过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类。

措施重写
如若要落实的七个类有联合特征,那么就可以将以此合伙的特征抽象出一个父类。
比如说,有小学生类和中学生类,那样的三个类,他们都以学生,那么就可以抽象出一个学员类,学生都会考查,那么就把考试这一个办法写在学童这几个类里面。
那么难题即便,小学生是小学生的试验,中学生是中学生的试验,作者不能都输出考试,那里就用到了艺术重写。
在子类中定义一个与父类一样的措施,那样举办的时候,父类中的方法就会被掩盖,从而输出的唯有子类中定义的不二法门。
举例:

<?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面象对象程序设计的严重性特点之一,它是指建立一个新的派生类,从一个或八个先前定义的类中继承数据和函数,而且可以重新定义或加进新数据和
函数,从而建立了类的层系或阶段。

   
 继承性是子类自动共享父类数据结构和艺术的体制,这是类之间的一种关系。在概念和达成一个类的时候,可以在一个曾经存在的类的根基之上来进展,把这几个早已存在的类所定义的始末作为友好的内容,并参加若干新的故事情节。

     

     举例:

     比如您未来一度有一个“人”这么些类了,那一个类里面有三个分子属性“姓名和年龄”以及还有多个成员方法“说话的艺术和行进的不二法门“,
假若以后先后要求一个学生的类, 因为学生的也是人,
所以学生也有成员属性“姓名和年龄”以及成员方法“说话的法子和走路的办法“,这一个时候你就足以让学生类来继承人这么些类,
继承之后,学生类就会把全人类里面的富有的属性都继承过来,
就不要你再去重新声Bellamy遍这几个分子属性和办法了,
因为学生类里面还有各省学校的本性和学习的艺术,所以在您做的学童类里面有继承自人类里面的品质和方式之外在添加学生特有的”所在学校属性“和”学习的方
法“, 那样一个学员类就宣称完结了, 继函大家也足以叫作“扩展”,
从下面我们就可以看到,学生类对全人类举行了扩张,
在人类里原来多少个脾气和三个艺术的基本功上添加一脾质量和一个格局扩张出来一个新的学生类。

     

1.父类
2.子类
子类能够持续父类的凡事
特征:单继承,一个子类只好有一个父类,一个父类可以派生多个子类

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地图