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面象对象程序设计的重点特征有,它是凭借建立一个新的派生类,从一个还是多只先前定义的类中继承数据及函数,而且可重定义或加进新数据和
函数,从而确立了近乎的层系或等。

   
 继承性是子类自动共享父类数据结构和方法的编制,这是相仿里的一模一样种关系。在概念及落实一个好像的时段,可
以当一个一度有的类的根基之上来进展,把此已经存在的类所定义的情节作友好之情节,并在几新的情。

     

     举例:

     比如您本早就生一个“人”这个近乎了,这个
类里面来零星只分子属性“姓名及年龄”以及还有个别个分子方法“说话的不二法门和走路的不二法门“,
如果现在先后用一个生的切近, 因为学生的也罢是人口,
所以学生吧发成员属性“姓名和年龄”以及成员方法“说话的点子与步的主意“,这个上你不怕可以吃学员类来继承人这个看似,
继承之后,学生类即见面将全人类间的兼具的特性都蝉联过来,
就无须您又错过重新声明一任何这些成员属性和艺术了,
因为生类中还有各地学校的性质和读书之不二法门,所以于您做的学习者类里有持续自人类间的属性与法外在丰富学生特有的”所当全校属性“和”学习的方
法“, 这样一个生类就宣称完成了, 继函我们呢足以于作“扩展”,
从地方我们就可以看出,学生类对人类进行了扩大,
在人类里原来两单特性和有限只措施的基本功及长一个性能和一个艺术扩展出来一个初的学习者类。

     

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